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

Как указано в документации ActiveMQ , вы можете настроить места назначения в конфигурации XML (activemq.xml), например:


   
      
      
   

70
задан tom 18 August 2010 в 06:01
поделиться

4 ответа

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

$em->persist($user);
$em->flush();
$user->getId();
167
ответ дан 24 November 2019 в 13:12
поделиться

Здесь я отправляю свой код, после того, как я требовал у меня в течение одного рабочего дня для нахождения этого решения.

Функция для получения последней сохраненной записи:

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;
    }
0
ответ дан 24 November 2019 в 13:12
поделиться

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

10
ответ дан 24 November 2019 в 13:12
поделиться

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

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

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

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

36
ответ дан 24 November 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: