Cómo usar UUIDs como Llave Primaria en Laravel
Aunque Laravel usa como llave primaria o primary key en los modelos un ID con un valor auto-incrementable, podemos cambiar esa funcionalidad por defecto a una personalizada usando UUIDs con llave primaria.
Para ello, deberás crear un trait y usarlo en todos tus modelos o al menos en los modelos que necesiten está funcionalidad así como las migraciones de dichos modelos.
Trait de UUID
Para crear este trait de UUID de php solo necesitarás copiar el siguiente código dentro del archivo con ruta app/Traits/HasUUID.php
, y/o, adicionalmente, deberás crear la carpeta Traits si no lo has hecho y el archivo HasUUID.php
Como te habrás dado cuenta, el trait que hemos creado reemplaza algunos valores de la llave primaria por defecto de los modelos de laravel y, adicionalmente, crea un observable (creating) para asignar el UUID al modelo antes de insertarlo en la base de datos.
Modelos con UUID
Una vez hemos creado nuestro trait, debemos usarlo en los modelos que requieren esta funcionalidad de la siguiente manera.
Migraciones con UUID
De igual manera, debemos modificar la migración de dicho modelo para que la columna primaria sea un uuid.
Sugerencias
Asegúrate de haber cambiado el nombre de tu llave primaria en todos los lugares donde la uses (factories, controllers, etc) o por el contrario mantener el nombre de la llave como "id" y no como "uuid".