Reputation: 2553
By Default, Laravel Eloquent model fires following events : 'creating', 'created', 'updating', 'updated', 'deleting', 'deleted', 'saving', 'saved', 'restoring', 'restored'
I am using listing for Eloquent events using wildcard listener in my AppServiceProvider
like this :
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
\Event::listen(['eloquent.*'], function ($a){
var_dump($a);
});
}
I am getting nothing when I dump $a
.
I know we can capture events with observable. Are there any other ways to do this?
Upvotes: 2
Views: 1364
Reputation: 4944
This might be a little bit late to answer the question and i prefer to perform using the Event Subscriber.
You can also have a look over it:
You need to create a event subscriber like this:
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'
);
}
}
Now Register your event listener in the EventServiceProvider
and it listens to every user created event fired from 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',
];
}
In my view this is a little bit cleaner way as you don't need to always touch your ServiceProvider
if you want to add multiple events related to the user.
Hope it helps you.
Upvotes: 1