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.
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.
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.
Dans Laravel 5.6+
use Illuminate\Support\Str;
$uuid = Str::uuid()->toString();
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)
);
}
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.