Ajoutez un uuid dans votre entité Doctrine

Publié le 12/10/2019
Ajoutez un uuid dans votre entité Doctrine

Vous souhaitez intégrer une gestion par Uuid pour votre entité? Excellente idée!
Pour vous simplifier la vie, il existe un package pour ça :)

Installez le package suivant avec composer :

composer require ramsey/uuid-doctrine

Ce package est compatible avec flex, le fichier de configuration est créé automatiquement :

# config/packages/ramsey_uuid_doctrine.yaml
doctrine:
    dbal:
        types:
            uuid: 'Ramsey\Uuid\Doctrine\UuidType'

Pour l'utiliser dans votre entité :
/**
 * @var UuidInterface
 *
 * @ORM\Column(type="uuid", unique=true)
 */
protected $uuid;

/**
 * @return UuidInterface
 */
public function getUuid()
{
    return $this->uuid;
}

Il faut ajouter dans le constructeur de votre entité :

public function __construct()
{
    $this->uuid   = Uuid::uuid4();
}

Un Uuid sera généré automatiquement...
Ici, j'ai choisi l'uuid4, il en existe d'autres, vous trouverez cela sur la doc : https://github.com/ramsey/uuid/wiki/Ramsey%5CUuid-Cookbook

Il existe une méthode d'implémentation différente avec des annotations décrite dans la doc, reposant sur des annotations et un poil plus de configuration.
Voici le lien vers la documentation : https://github.com/ramsey/uuid-doctrine

Perso, je préfère la solution la plus simple, avec un constructeur...

Commentaires
Ajoutez votre commentaire