php - error в subquery doctrine2


0

есть запросы на доктрине

        $movieQuery = $this->createQueryBuilder(w1)
        ->select(w1.movie)
        ->orderBy(w1.id, DESC)
        ->setMaxResults(1)
        ->getQuery();

    $seasonQuery = $this->createQueryBuilder(w2)
        ->select(w2.season)
        ->orderBy(w2.id, DESC)
        ->setMaxResults(1)
        ->getQuery();

    $episodeQuery = $this->createQueryBuilder(w3)
        ->select(w3.episode)
        ->orderBy(w3.id, DESC)
        ->setMaxResults(1)
        ->getQuery();

    $qb = $this->createQueryBuilder(w);

    return $qb
        ->select([
            w.name as word,
            w.translation as translation,
            m.name as movie,
            w.season as season,
            w.episode as episode,
        ])
        ->leftJoin(w.movie, m)
        ->where($qb->expr()->eq(m.movie, $movieQuery->getDQL()))
        ->andWhere($qb->expr()->eq(w.season, $seasonQuery->getDQL()))
        ->where($qb->expr()->eq(w.episode, $episodeQuery->getDQL()))
        ->orderBy(RAND())
        ->setMaxResults($limit)
        ->getQuery()
        ->getResult();

который по факту делает такой запрос на sql

SELECT * FROM vocabulary.word
WHERE movie_id = (select movie_id from vocabulary.word order by id desc LIMIT 1)
AND season = (select season from vocabulary.word order by id desc LIMIT 1)
AND episode = (select episode from vocabulary.word order by id desc LIMIT 1)  

но отдает ошибку

[Syntax Error] line 0, col 172: Error: Expected Literal, got SELECT

в чем может быть проблема?

Источник
  •  216
  •  0
  • 21 янв 2018 2018-01-21 15:29:51
Попробуйте использовать $qb->expr()->in(m.movie, $movieQuery->getDQL()) вместо $qb->expr()->eq(w.season, $seasonQuery->getDQL()) и ->getQuery() в подзапросах не нужно по идее вызывать. — 22 янв 20182018-01-22 06:59:02.000000

Ответов пока нет