Magazine Internet

Symfony2/Doctrine - Comment forcer l'id d'une entity?

Publié le 17 octobre 2013 par Gpenverne
Un peu de dév' aujourd'hui, avec une petite manip pour symfony2.
Il peut vous arriver d'avoir besoin, ponctuellement, de préciser un id spécifique pour une entité. Si vous essayez de créer une méthode setId(), vous verrez qu'au moment du flush, cela ne suffira pas. Voici donc une astuce en quelques étapes.
1) Créez une méthode setId() dans votre entity, et utilisez la avant le persist
2) Partons d'un code de ce type:
$em = $this->getDoctrine()->getManager() ;
$entity = new VotreEntity();
$entity->setId(3);
$em->persist($entity);
Après le persist, il vous suffit de faire :
$metadata = $em->getClassMetaData(get_class($entity));
$metadata->setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadata::GENERATOR_TYPE_NONE);
$em->flush();
Et c'est tout ;)
Bien entendu, si vous souhaitez setter chacun des id de ce type d'entité, il serait sage de se pencher sur d'autres solutions. Mais pour forcer un id de manière ponctuelle, le code ci dessus est fonctionnel ;)

Retour à La Une de Logo Paperblog

A propos de l’auteur


Gpenverne 8345 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazine