web-dev-qa-db-fra.com

Laravel Génération UUID

J'essaie de générer un UUID (pas comme clé primaire, il suffit d'en générer un) avec le paquet laravel-uuid . Les documents sont assez simples, donc selon le fichier readme, un UUID devrait être généré simplement en appelant $uuid = Uuid::generate();, mais il retourne un objet vide. (J'ai aussi essayé $uuid = Uuid::generate(1);)

J'ai suivi les instructions d'installation fournies ici (rien d'extraordinaire), l'application ne génère aucune erreur, donc je suppose que tout va bien.

Des packages alternatifs sont également les bienvenus.

16
Skatch

Il s'est avéré que je devais utiliser $uuid->string pour obtenir l'ID réel, l'objet entier s'affiche vide si vous essayez de le renvoyer dans une réponse json.

6
Skatch

Dans laravel 5.6, de nouveaux assistants ont été ajoutés pour générer des identificateurs uniques universels (UUID)

use Illuminate\Support\Str;

return (string) Str::uuid();

return (string) Str::orderedUuid();

Les méthodes renvoient un objet Ramsey\Uuid\Uuid

La méthode orderedUuid() générera un premier UUID d'horodatage pour une indexation de base de données plus facile et plus efficace.

27
Hemerson Varela

Dans Laravel 5.6+

use Illuminate\Support\Str;

$uuid = Str::uuid()->toString();
3
Andrew Koper

C'est possible que $uuid est vide car votre système ne fournit pas le bon type d'entropie. Vous pouvez essayer ces implémentations de bibliothèque pour un UUID v4 ou v5:

// https://tools.ietf.org/html/rfc4122#section-4.4
function v4() {
    $data = openssl_random_pseudo_bytes(16, $secure);
    if (false === $data) { return false; }
    $data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100
    $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10
    return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}

// https://tools.ietf.org/html/rfc4122#section-4.3
function v5($name) {
    $hash = sha1($name, false);
    return sprintf(
        '%s-%s-5%s-%s-%s',
        substr($hash,  0,  8),
        substr($hash,  8,  4),
        substr($hash, 17,  3),
        substr($hash, 24,  4),
        substr($hash, 32, 12)
    );
}
1
bishop

Essayez d'utiliser ce package générera et attribuera automatiquement le champ UUID dans votre modèle, peut également afficher et mettre à jour par clé UUID.

https://github.com/EmadAdly/laravel-uuid

1
Emad Adly