Как я могу получить последний идентификатор вставки с доктриной 2 ORM? Я не нашел этого в документации доктрины, разве это возможно?
Мне пришлось использовать это после флеша, чтобы получить последний идентификатор вставки:
$em->persist($user); $em->flush(); $user->getId();
Вы можете получить доступ к id после вызова метода persist менеджера сущностей.
$widgetEntity = new WidgetEntity(); $entityManager->persist($widgetEntity); $entityManager->flush(); $widgetEntity->getId();
Вам нужно свернуть, чтобы получить этот идентификатор.
Исправлена ошибка синтаксиса: добавлена точка с запятой после вызова $ entityManager-> flush ().
Если вы не используете сущности, а Native SQL, как показано здесь, вы можете получить последний вставленный идентификатор, как показано ниже:
$entityManager->getConnection()->lastInsertId()
Для баз данных с такими последовательностями, как PostgreSQL, не нужно lastInsertId
имя последовательности как первый параметр метода lastInsertId
.
$entityManager->getConnection()->lastInsertId($seqName = 'my_sequence')
Для получения дополнительной информации ознакомьтесь с кодом на GitHub здесь и здесь .
Вызов flush () может потенциально добавить много новых объектов, поэтому на самом деле не существует понятия «lastInsertId». Однако Doctrine будет заполнять поля идентификатора всякий раз, когда будет сгенерирован, поэтому доступ к полю id после вызова flush всегда будет содержать идентификатор вновь «сохраненного» объекта.
Немного поздно ответить на вопрос. Но,
Если это база данных MySQL
должен работать $doctrine_record_object->id
если AUTO_INCREMENT
определен в базе данных и в определении вашей таблицы.