Observer
- Créer l’observer
crée le fichier app/Observers/PaymentObserver.php
php artisan make:observer PaymentObserver --model=Payment
- 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);
}
}
- 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é.
- 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