Кейс: Понадобилось выставлять в очень редких случаях id сущности вручную. При AUTO стратегии доктрина просто игнорирует все, что ты навставляешь в сущность. Если перейти на CUSTOM стратегию - с поля слетит Auto Increment. Решение: `#[AsEntityListener(event: Events::postPersist, entity: Entity::class)] #[AsEntityListener(event: Events::prePersist, entity: Entity::class)] class EntityListener { private array $manualIds = [];

public function __construct( private EntityManagerInterface $em, ) {}

public function prePersist(Entity $entity): void { if ($entity->getId()) { $classMetadata = $this->em->getClassMetadata(get_class($entity)); $classMetadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); $classMetadata->setIdGenerator(new AssignedGenerator());

$this->manualIds[] = $entity->getId(); } }

public function postPersist(Entity $entity): void { if (in_array($entity->getId(), $this->manualIds, true)) { $classMetadata = $this->em->getClassMetadata(get_class($entity)); $classMetadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_AUTO); $classMetadata->setIdGenerator(new IdentityGenerator());

$this->em->flush(); } } }`