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

ARCHIVE
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 ;)
Une question? Une remarque? Un avis? Twittons-en!

When you click on links to various merchants on this site and make a purchase, this can result in this site earning a commission.
Affiliate programs and affiliations include, but are not limited to, the eBay Partner Network and Amazon.