27

我在谷歌上浪费了三亿小时,但没有一个解决方案是好的。

我有这个查询生成器:

        $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
4

2 回答 2

71

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

我也遇到了问题,WHERE INDoctrine QueryBuilderwith arrays 会给我一个类似的错误,奇怪的是,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)
    ;
于 2013-04-27T17:47:50.297 回答
5

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

...
$qb2->where(
     $qb2->expr()->in('u.id', ':ids')
)
->setParameter('ids', $ids_array)
...
于 2017-09-13T07:42:36.290 回答