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