Evenimente de Model și Clasa Observer în Eloquent în Laravel

eloquent Laravel 11.x / Eloquent Q&A / Distribuie cod

Interceptarea automată a ciclului de viață al modelelor: evenimentele creating, created, updating, updated, deleting și deleted.

Sintaxă
php artisan make:observer UserObserver --model=User

Modelele Eloquent emit o serie de evenimente pe durata ciclului lor de viață. În loc să aglomerezi modelele sau controllerele cu logici secundare (cum ar fi generarea automată de slug-uri, trimiterea de emailuri sau jurnalizarea acțiunilor), se utilizează Observers.

O clasă Observer grupează metode numite după evenimentul interceptat: created(User $user), updating(User $user), deleted(User $user).

Exemplu: Generare automată slug în evenimentul creating al unui Observer
namespace App\Observers;

use App\Models\Post;
use Illuminate\Support\Str;

class PostObserver
{
    public function creating(Post $post): void
    {
        // Generează automat slug-ul înainte de inserarea în SQL:
        if (empty($post->slug)) {
            $post->slug = Str::slug($post->title) . '-' . Str::random(5);
        }
    }

    public function deleted(Post $post): void
    {
        // Curățare fișiere atașate la ștergerea postării...
    }
}

// Înregistrare în model (Laravel 11):
// #[ObservedBy([PostObserver::class])]
// class Post extends Model {}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Evenimente de Model și Clasa Observer în Eloquent

Ai o nelămurire despre utilizarea comenzii Evenimente de Model și Clasa Observer în Eloquent sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.