Skip to main content

Observer

  1. Créer l’observer

crée le fichier app/Observers/PaymentObserver.php

php artisan make:observer PaymentObserver --model=Payment
  1. Enregistrer l’observer (OBLIGATOIRE)

Dans app/Providers/AppServiceProvider.php et Laravel l’appelle ensuite Automatiquement par Eloquent.

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\Models\Payment;
use App\Observers\PaymentObserver;

class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
Payment::observe(PaymentObserver::class);
}
}
  1. Comment appellé l'observer

Comment l’observer est déclenché

| Action                       | Méthode Observer appelée                |
|-------------------------------|----------------------------------------|
| `Payment::create()` | **saved()**|
| `$payment->save()` | **saved()**|
| `$payment->delete()` | **deleted()**|
| `$payment->update()` | **saved()**|
| `Payment::query()->update()` | **❌ AUCUN observer appelé** |

⚠️ Attention :

Payment::where(...)->update([...]); // ❌ observer NON appelé

Toujours passer par un modèle instancié.

  1. Comment vérifier que l’observer fonctionne

Test rapide

Payment::create([
'documentable_type' => InvoiceSale::class,
'documentable_id' => 1,
'amount' => 100,
'paid_at' => now(),
]);

👉 Le status du document doit changer automatiquement