Публикация данных из объекта запроса и присвоение значений вручную в том же методе создания?

Я хочу опубликовать все проверенные данные, взятые из ввода пользователя, вместе с данными, которые не вводятся, они извлекаются автоматически. Например, 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,
      ]);
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
26
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Нет, вы получите многомерный массив, если передадите массив внутри другого массива.

Вы можете использовать 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.

Другие вопросы по теме