Modelli Laravel: eseguire azioni automatiche quando i dati vengono creati, aggiornati o eliminati

Inviare una notifica all’amministratore quando un nuovo utente si registra.
Registrare ogni modifica apportata a un prodotto
Eliminare i vecchi file dall’archivio quando viene rimosso un record
Invece di ripetere queste attività nel controller o nel livello di servizio, i modelli laravel di Eloquent offrono una soluzione più pulita e di più facile gestione.
Scopriamo insieme cosa sono gli eventi modello, come utilizzarli e perché vale la pena implementarli nei progetti Laravel.
Cosa sono gli eventi modello eloquenti
In Laravel, gli Eloquent Models consentono di agganciarsi a determinati eventi che vengono attivati automaticamente durante l’interazione con il database.
Ecco alcuni degli eventi più comuni:
created
→ dopo che un modello è stato creatoupdated
→ dopo che un modello è stato aggiornatodeleted
→ dopo che un modello è stato eliminatosaving
→ prima che un modello venga creato o aggiornatoretrieved
→ quando un modello viene recuperato dal database
Grazie a questi eventi è possibile automatizzare attività come l’invio di e-mail, la registrazione di attività o la pulizia di file, il tutto senza appesantire il codice del controller.
Perché utilizzare gli eventi modello?
Ecco perché dovresti prendere in considerazione l’utilizzo di eventi modello nella tua applicazione Laravel:
- Struttura del codice più pulita
Mantiene il controller libero da logica non correlata. - DRY (Non ripeterti):
non ripetere più la stessa logica in più punti. - Scalabile e manutenibile.
Più facile da gestire man mano che la tua applicazione cresce. - Ottimo per l’automazione.
Perfetto per attività in background come notifiche, registrazione o pulizia.
Come utilizzare gli eventi modello
1. Direttamente nel modello ( booted()
metodo)
Esempio: si desidera registrare ogni volta che un elemento Post
viene creato, aggiornato o eliminato.
// app/Models/Post.php
class Post extends Model
{
protected static function booted()
{
static::created(function ($post) {
\Log::info('Post created: ID ' . $post->id);
});
static::updated(function ($post) {
\Log::info('Post updated: ID ' . $post->id);
});
static::deleted(function ($post) {
\Log::info('Post deleted: ID ' . $post->id);
});
}
}
Semplice ed efficace.
2. Utilizzo di un observer (per una logica più pulita e scalabile)
a. Creare un observer
php artisan make:observer PostObserver --model=Post
b. Aggiungere metodi di evento
// app/Observers/PostObserver.php
class PostObserver
{
public function created(Post $post)
{
\Log::info('Observer: Post created! ID ' . $post->id);
}
public function updated(Post $post)
{
\Log::info('Observer: Post updated. ID ' . $post->id);
}
public function deleted(Post $post)
{
\Log::info('Observer: Post deleted. ID ' . $post->id);
}
}
c. Registrare l’observer
// app/Providers/AppServiceProvider.php
public function boot()
{
Post::observe(PostObserver::class);
}