私はlaravel 5.1でカスタムモデルのイベントを作成したいです。 e.x.についてはカスタムモデルイベントを作成する方法laravel 5.1?
記事のカテゴリが更新されたら、私はイベントを作り、それを聞きたい。
$article = Article::find($id);
$article->category_id = $request->input('category_id');
// fire an event here
私はlaravel 5.1でカスタムモデルのイベントを作成したいです。 e.x.についてはカスタムモデルイベントを作成する方法laravel 5.1?
記事のカテゴリが更新されたら、私はイベントを作り、それを聞きたい。
$article = Article::find($id);
$article->category_id = $request->input('category_id');
// fire an event here
あなたは(Laravelイベントと混同しないでください)Eloquent Eventsを使用する必要があります。
出発点は同様なものになるだろうけれどもあなたは、これはより多くの再利用可能と単一責任を作るためにオブザーバーに見たいと思うpublic function boot()
{
Article::updated(function ($user) {
// do some stuff here
});
}
:
public function boot()
{
self::updated(function ($model) {
if (array_key_exists('category_id', $model->getDirty())) {
// Log things here
}
});
}
Laravelが含まれている「汚い」配列を移入します変更されたフィールド。これを使用して特定のフィールドが変更されたときを検出できます。
また、持っている:
$model->getOriginal('field_name') // for this field value (originally)
$model->getOriginal() // for all original field values
これはありがとうございます。 –
確かにどのようにカテゴリが更新されたときにのみ起動するようにカスタム雄弁なイベントを作成します。 –
あなたは 'Category'モデルを持っている場合は、単に'カテゴリー::更新を(使用.... ' –
http://stackoverflow.com/a/36406114/4865248 –