Я хочу опубликовать все проверенные данные, взятые из ввода пользователя, вместе с данными, которые не вводятся, они извлекаются автоматически. Например, ip.
Вместо того, чтобы иметь несколько экземпляров
name = $request->name, я хочу СУШИТЬ свой код.
Можно ли что-то подобное сделать
$user = User::create([
$request->all(),
'status' => 1,
'term_condition_submitted_on' => Carbon::now(),
'user_ip' => request()->ip(),
'confirmation_code' => md5(uniqid(mt_rand(), true)),
'confirmed' => 1,
]);






Нет, вы получите многомерный массив, если передадите массив внутри другого массива.
Вы можете использовать array_merge для объединения двух массивов:
array_merge($request->all(), [
'status' => 1,
'term_condition_submitted_on' => Carbon::now(),
'user_ip' => request()->ip(),
'confirmation_code' => md5(uniqid(mt_rand(), true)),
'confirmed' => 1,
]);
Разница с array_merge и append (с оператором +) в том, что array_merge перезапишет вхождения в первом массиве вторым массивом, поэтому ваши ручные значения всегда будут иметь прецедент.
Другой вариант - использовать функцию merge() по запросу:
$request->merge([
'status' => 1,
'term_condition_submitted_on' => Carbon::now(),
'user_ip' => request()->ip(),
'confirmation_code' => md5(uniqid(mt_rand(), true)),
'confirmed' => 1,
]);
$user = User::create($request->all());
Это объединит $request с массивом, который вы ему передаете, как следует из названия функции, после чего вы можете просто использовать ->create($request->all()); для создания вашего User из измененного объекта $request.