Получить самый высокий идентификатор из базы данных через Doctrine

После многократного использования в Google у меня все еще нет ответов.

Я хочу получить объект из базы данных с самым высоким ID (ai). Я знаю, что это должно быть очень просто, но я не мог найти решение.

В базе данных у меня есть сущности Syncs, у которых есть идентификатор автоинкремента. Мне нужен этот (последний) объект для извлечения значения, которое является DateTime.

(Кстати, в Symfony через Doctrine).

Ответ 1

Используйте функцию MAX и выберите один скалярный результат:

$highest_id = $em->createQueryBuilder()
    ->select('MAX(e.id)')
    ->from('YourBundle:Entity', 'e')
    ->getQuery()
    ->getSingleScalarResult();

Чтобы извлечь последний объект, вы можете просто сделать следующее:

$last_entity = $em->createQueryBuilder()
    ->select('e')
    ->from('YourBundle:Entity', 'e')
    ->orderBy('e.id', 'DESC')
    ->setMaxResults(1)
    ->getQuery()
    ->getOneOrNullResult();