我使用此代码;
public function findConversation($users)
{
$qb = $this->createQueryBuilder("c");
$qb->leftJoin('c.users','u')
->andWhere($qb->expr()->in('u', $users))
->getQuery()
->getSingleResult();
}
但是,$ qb-> expr方法会出错;
ContextErrorException:Catchable Fatal Error:类bla bla的对象 转换为字符串 C:\ \的Symfony \供应商\学说XAMPP \ htdocs中\ ORM \ LIB \原则\ ORM \查询\ Expr.php 第618行
哪种方法更适合条件使用数组?
答案 0 :(得分:0)
您应该使用用户ID数组作为参数。
代码:
$qb->expr()->in('u', array_map(function($user) { return $user->getId(); }, $users))
答案 1 :(得分:0)
这是我的解决方案。
代码:
$qb = $this->_em->createQueryBuilder();
$notInUsers = $qb->select('u.id')
->from('Group', 'g')
->innerJoin('g.user', 'u')
->getQuery()
->getResult(Query::HYDRATE_ARRAY);
$qb = $this->_em->createQueryBuilder();
$users = $qb->select('u')
->from('User', 'u')
->where($qb->expr()->notIn('u.id', array_map(function($notInUsers) { return $notInUsers['id']; }, $notInUsers)))
->getQuery()
->getResult(Query::HYDRATE_ARRAY);