Событие модели Laravel не пройдет - PullRequest
0 голосов
/ 01 октября 2018

Я использую ajax для обновления моей модели User, часть ajax работает нормально, так как данные успешно обновляются в базе данных, внутри действия моего контроллера выполняется обновление:

$user->update($data);

Часть, которая не работает:

Я использовал boot метод updated внутри моей модели, например:

class User extends BaseModel
{
    ...

    public static function boot()
    {
        parent::boot();

        self::updated(function($model){
            Log::info("updated");
            dd($model);
        });
    }
}

Событие не было достигнутоЯ не уверен, почему.

Проблема: Я пытаюсь выполнить действие после обновления модели, но событие не срабатывает.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Вот что указано в руководстве: update()

При массовом обновлении через Eloquent события обновленной модели не будут запущены для обновленных моделей.Это связано с тем, что модели никогда не извлекаются при массовом обновлении.

Вам нужно использовать save для запуска событий.Примерно так:

$user->fill($data);
$user->save();

Это, конечно, предполагает, что $user является моделью, а не экземпляром построителя запросов.

0 голосов
/ 01 октября 2018

Вы получаете доступ к функции статически: вместо этого попробуйте использовать

self::updated(function($model){
            Log::info("updated");
            dd($model);
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...