PHP
Automating Tasks with Eloquent Model Observers
Learn to use Eloquent Observers to perform actions automatically when model events like creating, updating, or deleting occur, centralizing business logic.
<?php
namespace App\Observers;
use App\Models\User;
class UserObserver
{
/**
* Handle the User "created" event.
*
* @param \App\Models\User $user
* @return void
*/
public function created(User $user)
{
// Logic to run after a user is created
// e.g., send a welcome email, create a default profile
// Example: Log the creation
}
/**
* Handle the User "updated" event.
*
* @param \App\Models\User $user
* @return void
*/
public function updated(User $user)
{
// Logic to run after a user is updated
// e.g., audit changes, clear cache
}
// ... other methods like `saving`, `deleting`, `restored`, etc.
}
// In App\Providers\EventServiceProvider.php (boot method):
// use App\Models\User;
// use App\Observers\UserObserver;
// User::observe(UserObserver::class);
How it works: Eloquent Observers provide a clean way to group listeners for model events. Instead of defining multiple event listeners for a single model, an observer class contains methods corresponding to various model lifecycle events (e.g., `created`, `updated`, `deleted`, `saving`, `retrieved`). This snippet shows a `UserObserver` with `created` and `updated` methods. Once registered in your `EventServiceProvider`, these methods will automatically execute whenever a `User` model is created or updated, centralizing related business logic and keeping your models thinner.