Header Ads Widget

Ticker

6/recent/ticker-posts

Tutorial de eventos de modelo de Laravel 8

 En este tutorial, aprenderemos sobre los eventos del modelo en Laravel 8 para usarlos en nuestra aplicación CRM para actualizar el rol del usuario a administrador antes de guardarlo en la base de datos.

El ORM de Laravel 8 proporciona poderosas abstracciones para trabajar con las bases de datos compatibles. Una de las características de Eloquent es la implementación del patrón de observador para enviar y escuchar eventos enviados por modelos de Laravel 8 cuando se ejecutan acciones como crear o guardar modelos.

Si no está familiarizado con el patrón de observador, simplemente:

Un patrón de diseño de software en el que un objeto, llamado sujeto, mantiene una lista de sus dependientes, llamados observadores, y les notifica automáticamente de cualquier cambio de estado, generalmente llamando a uno de sus métodos. Puede encontrar más información en Wikipedia .

Los patrones de diseño son simplemente soluciones comunes a problemas en el desarrollo de software, que están bien probados y probados por los desarrolladores.

Eventos modelo de Laravel 8

Un modelo en Laravel 8 proporciona una abstracción para trabajar con una tabla de base de datos con una API de alto nivel. Entre estas API, hay eventos que se activan cuando se realizan acciones en el modelo.

Los eventos de modelos son simples ganchos en los puntos importantes del ciclo de vida de un modelo que puede utilizar para ejecutar fácilmente el código cuando los registros de la base de datos se guardan, actualizan o eliminan.

Los eventos reciben la instancia del modelo que se está guardando, actualizando o eliminando.

Estos son los eventos que puede usar con sus modelos de Laravel:

  • creatingcreated: enviado antes y después de que se hayan creado los registros.
  • updatingupdated: enviado antes y después de que se actualicen los registros.
  • savingsaved: enviado antes y después de que se guarden los registros (es decir, que se creen o actualicen).
  • deletingdeleted: enviado antes y después de que los registros se eliminen o se eliminen temporalmente.
  • restoringrestored: enviado antes y después de que se restauran los registros eliminados temporalmente.
  • retrieved: enviado después de que se hayan recuperado los registros.

Según el sitio web oficial :

El retrievedevento se activará cuando se recupere un modelo existente de la base de datos. Cuando se guarda un nuevo modelo por primera vez, los eventos creatingcreatedse activarán. Si ya existía un modelo en la base de datos y savese llama al método, se activará updatingupdatedevents. Sin embargo, en ambos casos, los eventos savingsavedse activarán.

Ahora, escuchemos el savingevento del Usermodelo y actualice el rolecampo adminantes de guardar el primer registro. Abra el app/User.phparchivo y actualice de la siguiente manera:

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    protected $fillable = [
        'name', 'email', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];


    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    protected static function boot()
    {
        parent::boot();
        User::saving(function ($model) {
            if(!User::where("role","=", "admin")->exists())
            {
                $model->role = 'admin';
            } 

        });
    }
}

Simplemente agregamos un boot()método estático a nuestro Usermodelo. Dentro de este método, llamamos al saving()método y pasamos una función de cierre que recibe la instancia del modelo de Usuario que se está guardando.

Dentro de la saving()función de escucha, verificamos si existe un usuario con rol de administrador en la base de datos, si no, asignamos el valor de administrador al campo de rol.

Sirviendo su aplicación Laravel 8

Ahora, inicie su aplicación Laravel si aún no se está ejecutando:

$ php artisan serve

Diríjase a la http://localhost:8000dirección en su navegador web, debería poder registrarse para una primera cuenta con un rol de administrador. Después de eso, el registro se desactivará.

Consulte esta página de los documentos oficiales para conocer otro enfoque de escuchar los eventos del modelo utilizando la $dispatchesEventspropiedad en su modelo Eloquent y mapea varios puntos del ciclo de vida del modelo a sus propias clases de eventos :

En este punto de nuestro tutorial, hemos visto cómo podemos escuchar el savingevento en nuestra aplicación. Si bien esto es suficiente para implementar la funcionalidad requerida, veamos cómo podemos usar un observador de modelo para hacer lo mismo.

Conclusión

En este tutorial, hemos aprendido sobre los eventos del modelo de Laravel 8 y hemos visto cómo escuchar el evento de guardado en el Usermodelo para actualizar el rol del usuario que se está guardando .

Publicar un comentario

0 Comentarios