Doctrine запрос SQL в DQL - PullRequest
       5

Doctrine запрос SQL в DQL

1 голос
/ 12 марта 2020

У меня есть выбор с SQL, который работает отлично, но я не могу перевести этот запрос в DQL с createQueryBuilder().

Вот мой запрос:

SELECT distinct c.name_id
FROM cultures AS c
LEFT JOIN ilots AS i ON i.exploitation_id = 1

Мой текущий код:

return $this->createQueryBuilder('c')
        ->leftJoin(Ilots::class, 'i', 'ON', 'i.exploitation = 1')
        ->distinct()
        ->getQuery()
        ->getResult();

И ошибка:

[Синтаксическая ошибка] строка 0, столбец 74: Ошибка: ожидаемый конец строки, получено значение «ВКЛ»

Ответы [ 2 ]

1 голос
/ 12 марта 2020

В DQL ON не существует, вместо этого необходимо использовать WITH.

return $this->createQueryBuilder('c')
        ->leftJoin(Ilots::class, 'i', 'WITH', 'i.exploitation = 1')
        ->distinct()
        ->getQuery()
        ->getResult();

Документация

0 голосов
/ 12 марта 2020

Если между сущностью существуют отношения:

$qb = $this->entityManager->createQueryBuilder('c')
        ->select('c')
        ->distinct()
        ->from('cultures', 'c')
        ->leftJoin('c.ilots', 'i')
        ->where('i.exploitation = 1')
        ;

    return $qb->getQuery()->getResult();
...