默认情况下,Laravel Eloquent模型会触发以下事件:'creating', 'created', 'updating', 'updated', 'deleting', 'deleted', 'saving', 'saved', 'restoring', 'restored'
我在AppServiceProvider
中使用通配符侦听器使用Eloquent事件列表,如下所示:
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
\Event::listen(['eloquent.*'], function ($a){
var_dump($a);
});
}
当我转储$a
时,我什么都没得到。
我知道我们可以用可观察的方式捕捉事件。还有其他方法吗?
答案 0 :(得分:0)
回答这个问题可能有点迟,我更喜欢使用事件订阅者执行。
您还可以查看它:
您需要创建一个这样的事件订阅者:
<强> UserEventSubscriber.php 强>
namespace App\Listeners;
class UserEventSubscriber
{
/**
* Handle user created events.
*/
public function onUserCreated($event)
{
//perform what you want to do after the user is created.
}
/**
* Register the listeners for the subscriber.
*
* @param Illuminate\Events\Dispatcher $events
*/
public function subscribe($events)
{
$events->listen(
'eloquent.created: App\Users',
'App\Listeners\UserEventSubscriber@onUserCreated'
);
}
}
现在在EventServiceProvider
中注册您的事件监听器,它会监听从eloquent触发的每个用户创建的事件。
<强> EventServiceProvider.php 强>
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
//
];
/**
* The subscriber classes to register.
*
* @var array
*/
protected $subscribe = [
'App\Listeners\UserEventSubscriber',
];
}
在我看来,如果您想要添加与用户相关的多个事件,则不需要总是触摸ServiceProvider
,这样会更加清晰。
希望它对你有所帮助。