Symfony2 Doctrine querybuilder其中IN

时间:2013-04-27 17:38:47

标签: doctrine dql query-builder

我失去了时间谷歌,但没有一个解决方案是好的。

我有这个查询构建器:

        $qb2=$this->createQueryBuilder('s')
        ->addSelect('u')
        ->innerJoin('s.user','u')
        ->where("u.id IN(:followeeIds)")
        ->andWhere('s.admin_status = false')
        ->setParameter('user', $user)
        ->setParameter('followeeIds', $arrayFolloweeIds)
        ->orderBy('s.id','DESC')
        ->setMaxResults(15)
    ;

我可以进行第二次查询,然后像$qb->getDQL()一样,但我会缓存查询吗?

错误:

Invalid parameter number: number of bound variables does not match number of tokens

2 个答案:

答案 0 :(得分:54)

您正在设置用户参数,但我没有在任何地方看到它在查询中使用?

此外,我遇到WHERE IN和Doctrine QueryBuilder的问题,数组会给我一个类似的错误,奇怪的是,在绑定参数之前运行array_values似乎也解决了这些问题。

尝试:

$qb2=$this->createQueryBuilder('s')
        ->addSelect('u')
        ->innerJoin('s.user','u')
        ->where("u.id IN(:followeeIds)")
        ->andWhere('s.admin_status = false')
        ->setParameter('followeeIds', array_values($arrayFolloweeIds))
        ->orderBy('s.id','DESC')
        ->setMaxResults(15)
    ;

答案 1 :(得分:2)

在Symfony2.8中,以下示例帮助我

...
$qb2->where(
     $qb2->expr()->in('u.id', ':ids')
)
->setParameter('ids', $ids_array)
...