Saltar al contenido

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?

  1. 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 de Order, se ejecutará la función anónima.

  2. Generar Token con Str::uuid(): La clase Str de 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, o Str::orderedUuid() para generar UUIDs basados en el tiempo.

  3. Prevención de colisiones: Aunque la probabilidad de colisión con UUID es extremadamente baja, en este ejemplo se implementa un do/while que 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.

  4. Asignar el Token: Una vez obtenido un token único, se asigna a la propiedad $order->token antes de la inserción en la base de datos.

Buenas Prácticas

  • Definir el fillable para los campos necesarios (token en 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!

school Curso completo

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.

access_time 8 horas de contenido
layers 4 tecnologías en 1
update 100% actualizado
code Proyectos prácticos
Ver Curso Laravel 12 arrow_forward

star Incluido en cualquier suscripción

Rutas de aprendizaje