我们可以阅读here,我们可以收听有说服力的事件并在AppServiceProvider中使用它。它是这样的:
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) {
/***/
}
});
}
答案 0 :(得分:1)
您可以尝试这样的事情:
$models = ['User', 'Post', 'Comment', ....];
foreach ($models as $model) {
$model::creating(....);
$model::deleting(....);
}
类似的方法对我有用(虽然我使用的是DI而不是外墙)。
我在前一段时间找到并添加了书签的另一种方法:
Event::listen(['eloquent.creating: *'], function() {
....
});