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