symfony2 doctrine expr子查询:错误:参数号无效 [英] symfony2 doctrine expr subquery: Error: Invalid parameter number
本文介绍了symfony2 doctrine expr子查询:错误:参数号无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
尝试获取用户的状态。
public function getLikedStatuses(User $user)
{
$qb = $this->_em->createQueryBuilder();
$qb
->select('s.id')
->from('WallBundle:Likes','l')
->innerJoin('l.status', 's')
->where('l.user = :user')
->setParameter('user', $user)
->orderBy('s.id','DESC')
;
$qb2= $this->_em->createQueryBuilder()
->select('st')
->from('WallBundle:Status','st');
$qb2 ->andWhere($qb2->expr()->in('st.id',$qb->getDQL()));
return $qb2->getQuery()->getResult();
}
错误:
参数号无效:绑定变量的数量与令牌数不匹配
Error: Invalid parameter number: number of bound variables does not match number of tokens
BTW:当我转储$ qb-> getDQL()时: p>
BTW: when i dump the $qb->getDQL():
string 'SELECT s.id FROM TB\WBundle\Entity\Likes l LEFT JOIN l.status s WHERE l.user = :user' (length=87)
BTW2:当我替换'$ qb-> getDQL ()的(12073)(状态的id)它的工作...
BTW2: when i replace the '$qb->getDQL()' for (12073) (id of status) it works...
推荐答案
由于教义不支持限制使用子查询(查看我的评论 )一个可能的解决方案是执行两个单独的查询,这不是理想的,但可以工作。
As doctrine doesn't support a limit when using subquery (look at my comment) one possible solution is to execute two separate queries which is not ideal but works.
/**
* @param User $user
* @param int $limit
* @param int $offset
* @return User[]
*/
public function getUserFollowers(User $user, $limit = 20, $offset = 0)
{
$_followersIds = $this->getEntityManager()
->createQueryBuilder()
->select('IDENTITY(r.followeduser)')
->from($this->getEntityName(), 'r')
->where('r.followeeuser = :user')
->andWhere('r.followeduser !=:user')
->setParameter('user', $user)
->orderBy('r.id', 'DESC')
->setFirstResult($offset)
->setMaxResults($limit)
->getQuery()
->getResult();
$_usersQb = $this->getEntityManager()->createQueryBuilder();
$_usersQb
->select('u')
->from('UserBundle:User', 'u')
->where('u.id IN (:followersIds)')
->setParameter('followersIds', array_values($_followersIds));
return $_usersQb->getQuery()->getResult();
}
这篇关于symfony2 doctrine expr子查询:错误:参数号无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文