Получить последний идентификатор вставки с доктриной 2?


Как я могу получить последний идентификатор вставки с доктриной 2 ORM? Я не нашел этого в документации доктрины, возможно ли это вообще?

5 63

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 всегда будет содержать идентификатор вновь "сохраненного" объекта.

немного поздно, чтобы ответить на вопрос. Но,

Если это база данных MySQL

должны $doctrine_record_object->id работать, если AUTO_INCREMENT определена в базе данных и в определении таблицы.