Fusionar una solicitud de Laravel sobre la marcha
Cómo cambiar o agregar un nuevo valor a un parámetro de solicitud de Laravel.
Solicitud de Laravel
La solución está en la Parte B.
Parte A: (Introducción)
Veamos primero cómo funciona la función auxiliar merge () en Laravel:
El método merge
fusiona la matriz o colección dada con la matriz o colección original. Si una clave de cadena en los elementos dados coincide con una clave de cadena en la colección original, el valor de los elementos dados sobrescribirá el valor en la colección original:
$collection = collect(['product_id' => 1, 'price' => 100]);
agregar o actualizar la colección:
$merged = $collection->merge(['price' => 200, 'discount' => false]);
La nueva colección será:
$merged->all(); // ['product_id' => 1, 'price' => 200, 'discount' => false]
Si la matriz dada no es una matriz asociativa (las claves de los elementos dados son numéricas), los valores se agregarán al final de la colección.
$collection = collect(['Desk', 'Chair']); $merged = $collection->merge(['Bookcase', 'Door']); $merged->all(); // ['Desk', 'Chair', 'Bookcase', 'Door']
Parte B:
B-I: Lo que estamos fusionando es un valor simple.
Usted sabe que $request
es un objeto y $request->all()
es una matriz y no una colección.
Ahora, supongamos que hay una solicitud de que vamos a agregar o actualizar su valor asociado a la clave “imagen”. Simplemente puede hacer esto:
B-II: A veces, el valor (parámetro) que estamos fusionando (actualizando o agregando) es en sí mismo una matriz:
B-II-agregando:
En el caso de agregar y no actualizar, solo necesita seguir B-I.
Como ejemplo, suponga que no hay una clave de 'user'
en $request->all()
Simplemente puede fusionar $arrayOfUserData
como una matriz con $ request.
B-II-actualizando:
Si la clave 'user'
y su valor (que es una matriz $arrayOfUserData
) está en $request->all()
y queremos modificar esa matriz $arrayOfUserData
, primero, tenemos que modificar la matriz en algún lugar y luego fusionar la matriz modificada con la solicitud actual.
Resultado: