Detectar cambios en Eloquent

arrow_back Blog

Imagina que necesitas detectar cambios en Eloquent, por ejemplo para en caso que cambie el valor de algún atributo enviar un email a alguien notificando dicho cambio.

La verdad que existen muchas formas de hacer esto con Laravel, bien mediante Eloquent o directamente comprobando el valor en base de datos y el valor que viene de la petición Http, veamos el caso desde mi punto de vista incorrecto.

Está claro que este ejemplo va a funcionar y el trabajo se va a realizar de forma correcta, pero realmente esto no es responsabilidad del controlador, pienso que es mejor pasar esta responsabilidad al modelo, que es donde a través de los eventos de Eloquent podemos actuar de forma más eficaz. isDirty() y getDirty(), detectar cambios en Eloquent La forma efectiva y sencilla de comprobar si algo ha cambiado en un modelo de Eloquent es utilizando los métodos isDirty y getDirty().

isDirty() nos ayuda a detectar si el modelo ha cambiado y devuelve un booleano, true si hay cambios, false no los hay.

getDirty() nos devuelve los cambios que han ocurrido en un array, uno por cada atributo que haya cambiado.

Conociendo los eventos de Eloquent y los métodos isDirty y getDirty, la lógica indica que debemos utilizarlos, así, además de reorganizar nuestro código, pasamos la responsabilidad a quien realmente la tiene, en este caso el modelo.

Una vez el modelo se encarga de notificar al usuario cuando existan cambios, nuestro controlador puede ser todavía más simple, lo cual siempre es algo muy bueno.

Para mi esta es la forma correcta de detectar cambios en Eloquent y hacer algo en consecuencia, es cierto que cómo he dicho, tenemos muchas formas de hacerlo, pero yo personalmente prefiero pasar la responsabilidad al modelo.

Cursosdesarrolloweb Cursosdesarrolloweb

Cursosdesarrolloweb es una plataforma educativa con cursos y tutoriales en texto y vídeo.

Términos y condiciones Política de privacidad Formulario de contacto

Copyright 2024 © Todos los derechos reservados.

Contacto