Практика кодирования Laravel / Самый оптимизированный метод хранения

В документации Laravel говорится, что нужно хранить следующее:

public function store(Request $request)
{
    // Validate the request...

    $flight = new Flight;

    $flight->name = $request->name;

    $flight->save();
}

Однако почему бы и не следующим образом:

public function store(Request $request)
{
    Flight::create($request->all());
}

Приведенный выше пример довольно прост, поскольку он имеет только одно поле. Но я полагаю, что довольно утомительно делать что-то со многими полями и назначать каждое из них, а не просто передавать весь запрос $, как во втором примере?

Стоит ли изучать 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-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
2
0
34
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Первый вариант дает вам лучший контроль над тем, что входит в новую модель. Если вы сохраните все из запроса, то пользователь может ввести поля, которые вы не хотите сохранять для новой модели в вашем методе store.

Например, в вашем рейсе есть столбец is_top_priority, который объявлен как заполняемый в вашей модели Flight, но при создании нового рейса вы хотите установить только name для своего рейса (и оставьте is_top_priority равным нулю или, возможно, он имеет значение по умолчанию 0 в вашей таблице) . Если вы пишете Flight::create($request->all());, то пользователь может внедрить <input name = "is_top_priority" value = "1"> и получить преимущество вашего кода.

Поэтому использовать fill($request->all()) не рекомендуется. Используйте $request->only(...) или назначьте каждое необходимое поле вручную, как показано в первом примере.

Например, ваша модель имеет несколько полей, таких как имя, адрес электронной почты, пароль, статус и т. д. Запросите подтверждение имени, электронной почты и пароля, и если вы это сделаете:

Flight::create($request->all());

Клиент может отправлять с другими полями статус, но вы меняете статус вручную. Я делаю это:

Flight::create([
   'name' => $request->get('name'),
   'email' => $request->get('email'),
   'password' => $request->get('password'),
   'status' =>config('params.flight.status.not_active'),
]);

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