Eloquent, el ORM de Laravel, dispara una serie de eventos antes y después de crear, actualizar o eliminar registros. Por ejemplo tenemos eventos como “creating” y “created” o “saving” y “saved”. Hasta Laravel 5.3 podíamos asociar dichos eventos a callbacks usando una sintaxis como: Event::list("eloquent.created: App\Post", $callback)  o App\Post::created($callback).

Sin embargo, desde hace varias versiones, Laravel nos permite trabajar con eventos y listeners utilizando clases y a partir de Laravel 5.4 también podemos definir clases para los modelos de Eloquent de una forma muy sencilla como veremos en la siguiente lección:

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Notas

Por Clemir Rondón.

En Laravel 5.3 y versiones anteriores podemos en el método boot() del  archivo  /app/Providers/EventServiceProvider.php agregar:

Con lo cual se ejecutará al dispararse el evento updated del modelo Product.

Como alternativa, también puedes tener la clase evento ProductUpdated y una clase listener SendProductUpdatedConfirmation y agregarlo al array $listen de /app/Providers/EventServiceProvider.php de esta manera:

En la lección Crea y dispara tus propios eventos con Laravel te explicamos cómo generar automáticamente estas clases con el comando de artisan php artisan event:generate. Además, en las lecciones de nuestro  Curso de Eventos y Jobs con Laravel se explica con detalle cómo funcionan los eventos en Laravel.

Sin embargo, para Laravel 5.4  podemos asociar un evento como por ejemplo ProductUpdated a un modelo de forma sencilla, agregando una propiedad llamada $events en la clase del modelo, donde le asignas evento con la respectiva clase que quieres que se dispare:

Material relacionado

Únete a la discusión

Regístrate en Styde y obtén una invitación a nuestro Slack.

Lección anterior Traducciones basadas en JSON en Laravel 5.4 Lección siguiente Uso de Markdown en los Mailables en Laravel 5.4