Observer is used to automatically run code when something happens in a model.
Observer is a class that “observes” model events and performs actions automatically.
Common Model Events in Observer
| Event | Meaning |
| creating | Before insert data |
| created | After insert data |
| updating | Before update |
| updated | After update |
| deleting | Before delete |
| deleted | After delete |
Example:
Suppose when a new user is created, you want to automatically save a log message.
1. Create Observer:
php artisan make:observer UserObserver --model=User
app/Observers/UserObserver.php
<?php
namespace App\Observers;
use App\Models\User;
use Illuminate\Support\Facades\Log;
class UserObserver
{
// After user created
public function created(User $user)
{
Log::info('New User Created: ' . $user->name);
}
}
?>
2. Register Observer:
app/Providers/AppServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Models\User;
use App\Observers\UserObserver;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
User::observe(UserObserver::class);
}
}
?>
3. Create User:
User::create([
'name' => 'Mahendra',
'email' => 'mahendra@gmail.com',
'password' => bcrypt('123456')
]);
Laravel automatically creates log in:
storage/logs/laravel.log
[Date] local.INFO: New User Created: Mahendra