我失去了时间谷歌,但没有一个解决方案是好的。
我有这个查询构建器:
$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
答案 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)
...