Generar UUID en Laravel 5.5

UUID en Laravel

UUID significa identificador único universal o universally unique identifier y es un número de 16 bytes (128 bits)... Es una cifra de 32 dígitos hexadecimales, divididos en cinco grupos separados por guiones 8-4-4-4-12, lo que da como resultado 36 caracteres (32 dígitos y 4 guiones). Al final tendríamos algo así 772a8410-e30a-41d4-a714-433655441100


¿Para qué usar UUID si ya contamos con un ID en cada tabla?

La respuesta es sencilla, puedes tener el ID 1 en la tabla users y el ID 1 en la tabla posts es decir, tenemos que el ID se está repitiendo y es ahí donde nace el IDENTIFICADOR UNIVERSAL, en otras palabras un ID que no se repite en la BASE DE DATOS.

El UUID es empleado en el proceso de construcción de software. Es un ID Universal que permite distinguir un objeto o registro de otro dentro de todo el sistema.

UUID en Laravel 5.5

Para ello podemos utilizar el paquete webpatser/laravel-uuid y para su instalación usamos el comando composer require webpatser/laravel-uuid este paquete es para generar y validar un código UUID estándar...

Base de datos, creación del campo UUID

Una vez instalado el paquete procedemos a preparar la tabla, en este caso usaremos la tabla users como ejemplo, el campo se crea de la siguiente manera $table->uuid('uuid');

Recuerda que se gradará un dato de 36 caracteres, entonces en la tabla se crea un campo tipo char de 36 caracteres.

Archivo database/migrations/2014_10_12_000000_create_users_table.php

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->uuid('uuid'); //Campo único universal
    $table->string('name');
    $table->string('email', 180)->unique();
    $table->string('password');
    $table->rememberToken();
    $table->timestamps();
});

Generar código UUID

Probemos con la siguiente ruta.

Route::get('uuid', function () {
    echo Uuid::generate()->string;
});

Al acceder a la ruta uuid vemos como se genera por ejemplo un super código UUID como este 6ce52ce0-b8e6-11e7-b7ff-d3344d79e4f2

Guardar en una tabla

Debemos tener en cuenta que el campo esté de alta en la entidad, en este caso User.php

Archivo app/User.php

protected $fillable = [
    'uuid', 'name', 'email', 'password',
];

Ejemplo de guardar routes/web.php

use App\User;

Route::get('guardar-usuario', function () {
    User::create([
        'uuid'  	=> Uuid::generate()->string,
    	'name'  	=> 'Italo Morales',
    	'email' 	=> 'i@italomoralesf.com',
    	'password' 	=> bcrypt('123456')
    ]);
});

De esta manera culminamos este post, qué opinas?... Recuerda que cada comentario es una nota que guardas en tu perfil.

Importante

El UUID no reemplaza al ID, el ID es un identificador único de la tabla, y el UUID es un indentificador único de la base de datos.

Adquiere en preventa y aprovecha un gran descuento TDD en Laravel

Comparte en

Creado por: Venezuela Italo Morales

Profesor de #Laravel y #PHP en Rimorsoft Online

Más información


Spatie/Laravel Permission ¿Cómo agregar campos en la tabla "roles"?

Hola, mi consulta es la siguiente:

Relacioné la tabla "roles" con mi tabla** "empresa**", es decir, en la tabla "roles", tengo el campo "id_empresa", en la vista, están los campos necesarios y el select de la empresa pero al querer guardar los datos, me arroja el siguiente error: ** "The given role or permission should use guard web instead of Empresas. "** No ...

SOFTWARE PARA CONSULTORIOS MEDICOS

Hola Amigos. soy nuevo en el grupo.. me gustaria saber si alguien tiene o tuvo algun proyecto basado en laravel, para consultorios medicos? ...

sincronización de componentes hermanos

un gran saludo a la comunidad rimorsorf... espero de su valiosa ayuda para mi problema que es el siguiente:

tengo dos componentes en el mismo nivel, el primero crea una tabla con una lista de procesos por tramitar y el segundo componente lista en una tabla los procesos que se han asignado para tramitar; cuando en la primera tabla se asigna el proceso este debe desaparecer de...

plantilla blade y vuejs2

buenas noches comunidad, por casualidad alguien sabrá si se puede integrar la plantilla de laravel blade en vuejs2 component??, gracias dee antemano...