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 ;)