Symfony2的学说的QueryBuilder凡(Symfony2 Doctrine queryb

2019-09-01 06:58发布

我losted trilion小时google一下,但没有一个解决方案是好的。

我有这样的QueryBuilder:

        $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

Answer 1:

要设置用户参数,但我没有看到它在查询的任何地方被使用?

此外,我曾与问题, WHERE IN与条令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)
    ;


Answer 2:

在Symfony2.8下面的例子可以帮助我

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


文章来源: Symfony2 Doctrine querybuilder where IN