En ocasiones, necesitamos generar un token único para nuestros modelos de Eloquent. Estos tokens pueden servir para validar solicitudes especiales, enlaces de confirmación o cualquier otra característica que requiera un identificador único y seguro.
En Laravel, una forma sencilla de lograr esto es aprovechar el evento creating de Eloquent y la clase Str. A continuación, se muestra un ejemplo de cómo podrías implementarlo:
¿Cómo Funciona Este Código?
Evento
creating: Laravel nos permite “enganchar” lógica antes de que se cree un nuevo registro en la base de datos. En este caso, cada vez que se vaya a crear una nueva instancia deOrder, se ejecutará la función anónima.Generar Token con
Str::uuid(): La claseStrde Laravel ofrece varios métodos para generar cadenas únicas.uuid()es uno de ellos y produce un identificador UUID.Alternativas: Podrías usar
Str::random(32)si requieres un token alfanumérico, oStr::orderedUuid()para generar UUIDs basados en el tiempo.
Prevención de colisiones: Aunque la probabilidad de colisión con UUID es extremadamente baja, en este ejemplo se implementa un
do/whileque comprueba si el token existe en la base de datos. Si ya está en uso, generará uno nuevo hasta encontrar un token único.Optimización: Dependiendo de tu caso de uso y de la probabilidad de colisión que aceptes, podrías obviar el bucle
do/while. Sin embargo, si la unicidad absoluta es prioritaria, esta verificación adicional es recomendable.
Asignar el Token: Una vez obtenido un token único, se asigna a la propiedad
$order->tokenantes de la inserción en la base de datos.
Buenas Prácticas
Definir el
fillablepara los campos necesarios (tokenen este caso), evitando problemas con asignaciones masivas.Eventos de Eloquent: Aprovechar
creating,updating, etc., cuando la lógica de negocio “depende” del ciclo de vida del modelo.Índice Único (opcional): Si deseas reforzar la unicidad a nivel de base de datos, podrías crear un índice único en la columna
token. De esta manera, incluso si ocurriera una colisión, la base de datos lanzará un error que podrías manejar.
¿Por qué Str::uuid()?
Baja probabilidad de colisión: Un UUID es lo suficientemente grande como para que las probabilidades de repetición sean muy bajas.
Estandarizado: El formato UUID es reconocido ampliamente.
Legibilidad: Al ser un método de la clase
Str, es fácil de entender y mantener en el código.
Conclusión
Con esta sencilla implementación, te aseguras de que cada registro de Order tendrá un token único y confiable, listo para utilizarse en autenticaciones, comprobaciones o cualquier otra funcionalidad que requiera un identificador exclusivo.
¿Ya has implementado tokens únicos en tu aplicación? ¡Comparte tu experiencia con tus colegas y no olvides explorar la Ruta de Aprendizaje Laravel 11!
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