En algunas ocasiones podemos tener la necesidad de encriptar bases de datos en Laravel, más aún con el RGPD. Si ese es tu caso, en este tutorial vamos a ver qué sencillo es conseguir este propósito gracias a Eloquent Mutators y Accessors. Definir un Trait para extender Eloquent Lo primero que vamos a hacer para conseguir un comportamiento más dinámico es crear un Trait para sobrescribir los métodos getAttribute y setAttribute de Eloquent, los cuáles nos permitirán alterar los datos de nuestro modelo al momento de obtener y establecer datos.
Además de los métodos mencionados anteriormente, también tenemos 2 métodos importantes, el método encrypt y el método decrypt, es importante decir que este tipo de encriptación no es fiable si los datos que quieres manejar son sensibles, el motivo es que nosotros vamos a querer encriptar pero también desencriptar para mostrar estos datos posteriormente, incluso para iniciar sesión utilizando el correo electrónico, este último es el motivo real, para que fuese seguro la variable $iv debería ser dinámica y no estática. Aplicar el Trait Encryptable a nuestros modelos Ahora vamos a abrir por ejemplo el modelo User para utilizar el Trait Encryptable de la siguiente forma.
Sólo por utilizar la propiedad $encryptable pasando las columnas que queramos encriptar en base de datos tenemos suficiente, si ahora por ejemplo registras un nuevo usuario verás que las columnas name y email son encriptadas en base de datos y si obtienes los usuarios verás que al acceder a dichas columnas éstas aparecen sin encriptar.
Curso Laravel 12
Completo 2026
El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.
star Incluido en cualquier suscripción