Есть ли способ манипулировать входными данными в модели Laravel перед их сохранением? - PullRequest
0 голосов
/ 06 мая 2020

В Laravel, я использовал метод создания модели во многих контроллерах,

Теперь мне нужно выполнить strip_tags($comment) для определенного c ввода во всех этих контроллерах, прежде чем он будет вставлен в базу данных с помощью метода create(), подобного этому:

Comment:create([
    'comment' => $comment,
    ...
]);

Должен ли я повторять это во всех контроллерах:

$comment = strip_tags($comment); // < Is it possible to do this on model's file so we don't repeat it every time? 

Comment:create([
    'comment' => $comment,
    ...
]);

Или это то, что может быть достигнуто в Модели?

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Вы можете использовать model events для проверки и настройки перед сохранением.

добавьте следующий метод к вашему классу модели;

protected static function boot()
{
    parent::boot();
    self::saving(function ($model) {
        $model->comment = strip_tags($model->comment);
        // do your pre-checks or operations.
    });
}

вот полезный пост читать об этом

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

Есть способ сделать это прямо в модели, он называется Мутаторы . Если имя вашего столбца комментарий , тогда функция мутатора будет вызываться setCommentAttribute .

public function setCommentAttribute($comment)
{
    $this->attributes['comment'] = strip_tags($comment);
}

В любом месте, где для этой модели используется сохранение / обновление, комментарий данные будут go с помощью функции set ... .

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