Как написать нормальное предложение в SQL - PullRequest
0 голосов
/ 03 января 2019

Я хочу написать это предложение для DQL:

SELECT id FROM `article` WHERE `created_at` IN (select max(created_at) from article)

Я пробую это, но у меня есть какая-то ошибка:

return $this->createQueryBuilder('p')
            ->select('p.id')
            ->where('p.createdAt IN (select max(p.createdAt)from p)')
            ->getQuery()
            ->getResult();

Ошибка:

[Semantical Error] line 0, col 88 near 'p)': Error: Class 'p' is not defined.

Большое спасибо, ibynmax

1 Ответ

0 голосов
/ 03 января 2019

Вам также нужно выписать подзапрос в построителе запросов:

$subQuery = $this->createQueryBuilder('p')
    ->select('max(p.createdAt)');

$queryBuilder = $this->createQueryBuilder('p');

return $queryBuilder
    ->select('p.id')
    ->where($queryBuilder->expr()->in('p.createdAt', $subQuery->getDQL()))
    ->getQuery()
    ->getResult();
...