2016-08-07 2 views
1

hereを読むことができるので、雄弁なイベントを聞き取り、AppServiceProviderで使用することができます。Laravel - すべての雄弁な要求をキャッチ

public function boot() 
{ 
    User::creating(function ($user) { 
     Log::create(['message' => 'create method']); 
    }); 

    User::deleting(function ($user) { 
     Log::create(['message' => 'delete method']); 
    }); 
} 

私の雄弁なモデルについては、作成時および作成時にデータベースにログインしたいと考えています。これは、このスニペットを20回コピーしてコピーし、User::creating部分のみを変更する必要があることを意味します。

は、私はすべてのモデルからの雄弁なイベントをキャッチし、このような何かを作ることができる方法はあります:

public function boot() 
{ 
    AllModels::creating(function ($model) { // <--- something like this here? 
     Log::create([ 
      'message' => 'create method', 
      'model' => get_class($model) // <--- and then get the class name 
     ]); 

    AllModels::deleting(function ($user) { 
     /***/ 
    } 

    }); 
} 

答えて

1

あなたはこのような何か試すことができます。

$models = ['User', 'Post', 'Comment', ....]; 
foreach ($models as $model) { 
    $model::creating(....); 
    $model::deleting(....); 
} 

同様のアプローチは、私のために働いたが(私はファサードの代わりにDIを使いました)。

私が発見し、いくつかの時間前ブックマークもう一つのアプローチ:

Event::listen(['eloquent.creating: *'], function() { 
    .... 
});