Получить последний идентификатор вставки с доктриной 2?
Как я могу получить последний идентификатор вставки с доктриной 2 ORM? Я не нашел этого в документации доктрины, возможно ли это вообще?
5 ответов:
Я должен был использовать это после Флеша, чтобы получить последний идентификатор вставки:
$em->persist($user); $em->flush(); $user->getId();
вы можете получить доступ к идентификатору после вызова метода persist диспетчера сущностей.
$widgetEntity = new WidgetEntity(); $entityManager->persist($widgetEntity); $entityManager->flush(); $widgetEntity->getId();
вы do нужно смыть, чтобы получить этот идентификатор.
исправление синтаксической ошибки: добавлена точка с запятой после вызова $entityManager - >flush ().
Если вы не используете сущности, но родной SQL, как показано здесь затем вы можете получить последний вставленный идентификатор, как показано ниже:
$entityManager->getConnection()->lastInsertId()
для баз данных с последовательностями, такими как PostgreSQL обратите внимание, что вы можете указать имя последовательности в качестве первого параметра
lastInsertId
метод.$entityManager->getConnection()->lastInsertId($seqName = 'my_sequence')
для получения дополнительной информации взгляните на код на GitHub здесь и здесь.
вызов flush () потенциально может добавить много новых сущностей, поэтому на самом деле нет понятия "lastInsertId". Однако доктрина будет заполнять поля идентификаторов всякий раз, когда они генерируются, поэтому доступ к полю id после вызова flush всегда будет содержать идентификатор вновь "сохраненного" объекта.