我在谷歌上浪费了数万亿个小时,但没有一个解决方案是好的。
我有这个查询生成器:
$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
您正在设置用户参数,但我没有看到它在任何地方的查询中使用?
我还遇到了
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)
;
在 Symfony2.8 中,以下示例对我有帮助
...
$qb2->where(
$qb2->expr()->in('u.id', ':ids')
)
->setParameter('ids', $ids_array)
...