Laravel: как создать функцию After или Before save | update

Мне нужно сгенерировать функцию для вызова после или перед save() или update(), но я не знаю, как это сделать. Я думаю, мне нужен обратный вызов из save() update(), но я не знаю, как это сделать. Благодаря

Ответ 1

Внутри вашей модели вы можете добавить метод boot(), который позволит вам управлять этими событиями.

Например, имея модель User.php:

class User extends Model 
{

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

        self::creating(function($model){
            // ... code here
        });

        self::created(function($model){
            // ... code here
        });

        self::updating(function($model){
            // ... code here
        });

        self::updated(function($model){
            // ... code here
        });

        self::deleting(function($model){
            // ... code here
        });

        self::deleted(function($model){
            // ... code here
        });
    }

}

Здесь вы можете просмотреть все доступные события: https://laravel.com/docs/5.2/eloquent#events

Ответ 2

Создайте поставщика, используя эту команду

php artisan make:provider ProviderClassName

затем определите обратные вызовы для моделей в функции загрузки

Model::created(function($model){
  //Do you want to do
});

Список доступных обратных вызовов:

Model::creating(function($model){});
Model::updated(function($model){});
Model::updating(function($model){});
Model::deleted(function($model){});
Model::deleting(function($model){});
Model::saving(function($model){});
Model::saved(function($model){});