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

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

Ответ 1

Мне пришлось использовать это после флеша, чтобы получить последний идентификатор вставки:

$em->persist($user);
$em->flush();
$user->getId();

Ответ 2

Вы можете получить доступ к id после вызова метода persist менеджера сущностей.

$widgetEntity = new WidgetEntity();
$entityManager->persist($widgetEntity);
$entityManager->flush();
$widgetEntity->getId();

Вам нужно свернуть, чтобы получить этот идентификатор.

Исправлена ​​ошибка синтаксиса: добавлена ​​точка с запятой после вызова $entityManager- > flush().

Ответ 3

Если вы не используете сущности, а Native SQL, как показано здесь, вам может понадобиться получить последний вставленный идентификатор, как показано ниже:

$entityManager->getConnection()->lastInsertId()

Для баз данных с такими последовательностями, как PostgreSQL, пожалуйста, не указывайте, что вы можете указать имя последовательности в качестве первого параметра lastInsertId метод.

$entityManager->getConnection()->lastInsertId($seqName = 'my_sequence')

Для получения дополнительной информации ознакомьтесь с кодом на GitHub здесь и .

Ответ 4

Вызов flush() может потенциально добавить много новых объектов, поэтому на самом деле не существует понятия "lastInsertId". Однако Doctrine будет заполнять поля идентификатора всякий раз, когда будет сгенерирован, поэтому доступ к полю id после вызова flush всегда будет содержать идентификатор вновь "сохраненного" объекта.

Ответ 5

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

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

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