@HellWalk

Как сджойнить несвязанные сущности в QueryBuilder?

Элементарный запрос, с которым, почему-то, возникли сложности.

Итак, есть две сущности (таблицы) которые между собой не связаны (foreign key нет):

60d48029d59a4367849774.png

60d480320e1e4816639653.png

Нужно через createQueryBuilder построить запрос вида:

SELECT post.title, view.views FROM post
JOIN view ON post.title = view.post
WHERE view.views > 0;


Пишу:
public function getPosts(): array
    {
        return $this->createQueryBuilder('p')
            ->join(View::class, 'v', 'ON', 'p.title = v.post')
            ->where('v.views > 0')
            ->getQuery()
            ->getResult()
            ;
    }


Получаю ошибку:

QueryException: [Syntax Error] line 0, col 61: Error: Expected end of string, got 'ON'


Если сущности связаны между собой через свойство - то проблем сждойнить не возникает. Но неужели нужно связывать вначале сущности через свойство, чтобы потом сделать нужный join в QueryBuilder?
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
BoShurik
@BoShurik
Symfony developer
return $this->createQueryBuilder('p')
    ->join(View::class, 'v', 'WITH', 'p.title = v.post')
    ->where('v.views > 0')
    ->getQuery()
    ->getResult()
;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@sl0
Можно попробовать сделать через raw sql.
Но вообще по логике, эти сущности должны быть связаны. Во-первых, инфа дублируется зазря, во-вторых, нарушить консистентность базы проще простого.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы