Как указано в документации ActiveMQ , вы можете настроить места назначения в конфигурации XML (activemq.xml
), например:
Мне пришлось использовать это после промывки, чтобы получить последний идентификатор вставки:
$em->persist($user);
$em->flush();
$user->getId();
Здесь я отправляю свой код, после того, как я требовал у меня в течение одного рабочего дня для нахождения этого решения.
Функция для получения последней сохраненной записи:
private function getLastId($query) {
$conn = $this->getDoctrine()->getConnection();
$stmt = $conn->prepare($query);
$stmt->execute();
$lastId = $stmt->fetch()['id'];
return $lastId;
}
Другая Функция, которые вызывают вышеупомянутую функцию
private function clientNum() {
$lastId = $this->getLastId("SELECT id FROM client ORDER BY id DESC LIMIT 1");
$noClient = 'C' . sprintf("%06d", $lastId + 1); // C000002 if the last record ID is 1
return $noClient;
}
Вызов flush() может потенциально добавить много новых сущностей, поэтому на самом деле не существует понятия "lastInsertId". Однако Doctrine будет заполнять поля идентификации всякий раз, когда они создаются, поэтому обращение к полю id после вызова flush всегда будет содержать ID новой "сохраняемой" сущности.
Вы можете получить доступ к идентификатору после вызова метода persist диспетчера сущностей.
$widgetEntity = new WidgetEntity();
$entityManager->persist($widgetEntity);
$entityManager->flush();
$widgetEntity->getId();
Вам и необходимо выполнить сброс, чтобы получить этот идентификатор.
Исправление синтаксической ошибки: добавлена точка с запятой после вызова $ entityManager-> flush ().