Как я могу получить последний идентификатор вставки с доктриной 2 ORM? Я не нашел этого в документации доктрины, возможно ли это?
Получить последний идентификатор вставки с доктриной 2?
Ответ 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
определяется в базе данных и в определении вашей таблицы.