web-dev-qa-db-ja.com

Laravel:保存後または更新前に関数を作成する方法|更新

Save()またはupdate()の前後に呼び出す関数を生成する必要がありますが、その方法はわかりません。 save()update()からのコールバックが必要だと思いますが、その方法がわかりません。ありがとう

27
Daniele Longheu

モデル内に、これらのイベントを管理できる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

73
Mauro Casas

このコマンドを使用してプロバイダーを作成する

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){});
9
Rohit Khatri