Laravel - это способ добавить значения в массив запросов
Я сталкиваюсь с ситуацией в Laravel при вызове метода store() или update() с параметром Request, чтобы добавить некоторое дополнительное значение для запроса, прежде чем вызывать функции Eloquent, есть ли для этого какой-либо способ.
function store(Request $request)
{
// some additional logic or checking
User::create($request->all());
}
Ответы
Ответ 1
Обычно вы не хотите ничего добавлять к объекту Request, лучше использовать collection и put()
helper:
function store(Request $request)
{
// some additional logic or checking
User::create(array_merge($request->all(), ['index' => 'value']));
}
Или вы можете объединить массивы:
User::create($request->all() + ['index' => 'value']);
Но, если вы действительно хотите добавить что-то к объекту Request, сделайте это:
$request->request->add(['variable' => 'value']); //add request
Ответ 2
Ссылаясь на Alexey Mezenin
ответ:
При использовании своего ответа мне пришлось добавить что-то прямо в объект запроса и использовать:
$request->request->add(['variable', 'value']);
Используя это, он добавляет две переменные:
$request[0] = 'variable', $request[1] = 'value'
Если вы новичок, как я, и вам нужен вспомогательный массив, правильный способ сделать это
$request->request->add(['variable' => 'value']);
Надеюсь, что я спасал ваше время
PS: Спасибо @Alexey
, ты действительно помог мне с ответом
Ответ 3
Я пробовал $request->merge($array)
в Laravel 5.2 и работает отлично.
Пример:
$request->merge(["key"=>"value"]);
Ответ 4
В laravel 5.6 мы можем передавать параметры между Middlewares, например:
FirstMiddleware
public function handle($request, Closure $next, ...$params)
{
//some code
return $next($request->merge(['key' => 'value']));
}
SecondMiddleware
public function handle($request, Closure $next, ...$params)
{
//some code
dd($request->all());
}
Ответ 5
Вы также можете использовать код ниже
$request->request->set(key, value).
Подходит для меня лучше.
Ответ 6
Чтобы добавить новый параметр для ex: newParam
к текущему объекту Request
, вы можете сделать:
$newParam = "paramvalue";
$request->request->add(['newParam' => $newParam]);
После добавления нового параметра вы сможете увидеть этот вновь добавленный параметр для объекта Request:
dd($request);//prints the contents of the Request object
Ответ 7
Я использовал этот код, чтобы добавить что-то в свой запрос.
$req->query->add(['key'=>'variable']);
$req->request->add(['key'=>'variable']);
Ответ 8
Вы можете напрямую обращаться к массиву запросов с помощью $request['key'] = 'value'
;
Ответ 9
Другой способ -
$a = $request->all();
$a['variable'] = 'value';
Ответ 10
достаточно сказано по этому вопросу, но я не удержался, чтобы добавить свой ответ. Я считаю, что самый простой подход
request()->merge([ 'foo' => 'bar' ]);
Ответ 11
$request->offsetSet(key, value);