Добавление значения stati c в массив, который сохраняется в базе данных в Laravel - PullRequest
1 голос
/ 01 мая 2020

В Laravel у меня есть таблица базы данных с именем article и соответствующая модель с именем Article . Скажем, статьи таблицы имеют столбцы id, body, create_by

В контроллере ArticleController я могу сохранить в БД как:

    $data = request()->validate(['name'=>'required|min:5|max:10']);

    $article = new \App\Article();
    $article->name = request('name');
    $article->created_by = 1;
    $article->save();

    return redirect()->back();

, которую я хотел бы сократить до:

    \App\Article::create(request()->validate(['name'=>'required|min:5:max:10']));
    return redirect()->back();

Моя проблема в том, что значение для столбца create_by не будет поступать из запроса POST, вместо этого это значение может быть получено из сеанса или глобальной переменной Dynami c.

Как добавить столбец made_by в сокращенную версию?

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

Существует несколько решений. Во-первых, в качестве ответа Алекса Хосе вы можете использовать наблюдателя. Вы можете использовать наблюдателя или события (в модели). Во-вторых, вы можете использовать значение по умолчанию в столбце таблицы. Но почему? Ваш первый путь очень хорошо. Более читаемый, более расширяемый. Используйте первый способ, если вы хотите, чтобы хороший разработчик. Если вы хотите сократить свой код, попробуйте это:

$data = request()->validate(['name'=>'required|min:5|max:10']);

\App\Article::create(array_merge($data,['created_by'=>1]));
0 голосов
/ 01 мая 2020

Вы можете использовать Обозреватели моделей, чтобы прослушать событие создания и назначить create_at из аутентификации или сеанса.

Оформление заказа https://laravel.com/docs/7.x/eloquent#observers https://laravel.com/docs/7.x/eloquent#events

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...