多个联接不适用于createQueryBuilder

乔纳森

当我使用createQuery它时:

$this->getEntityManager()
    ->createQuery(
        'SELECT e FROM CPBundle:Event e, CPBundle:Player p, CPBundle:EventType et
        WHERE e.player = p.id AND e.eventType = et.id';
    )
    ->getResult();

但是当我尝试使用相同的查询createQueryBuilder不起作用时:

public function findEventsByParams($params)
{
    $qb = $this->getEntityManager()->createQueryBuilder();

    $query = $qb->select('e', 'p', 'et')
        ->from('CPBundle:Event', 'e')
        ->innerJoin('CPBundle:Player', 'p')
        ->innerJoin('CPBundle:EventType', 'et')
        ->where('e.player = p.id')
        ->andWhere('e.eventType = et.id');

    if ($params['username']) {
        $qb->andWhere('p.username = :username')
            ->setParameter('username', $params['username']);
    }

    //TODO: other params

    return $query->getQuery()->getResult();
}

我收到此错误消息:

[语法错误]第0行,第73行:错误:预期字面量为'JOIN'

乔纳森

看到这个答案:https : //stackoverflow.com/questions/17989473/symfony2-doctrine-multiple-joins-returns-error

public function findEventsByParams($params)
{
    $qb = $this->getEntityManager()->createQueryBuilder();

    $query = $qb->select('e')
        ->from('CPBundle:Event', 'e')
        ->innerJoin('e.player', 'p')
        ->innerJoin('e.eventType', 'et');

    if ($params['username']) {
        $qb->andWhere('p.username = :username')
            ->setParameter('username', $params['username']);
    }

    //TODO: other params

    return $query->getQuery()->getResult();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章