Doctrine orm Pagerfanta不喜欢我的条令质疑

Doctrine orm Pagerfanta不喜欢我的条令质疑,doctrine-orm,symfony4,pagerfanta,Doctrine Orm,Symfony4,Pagerfanta,在基于symfony 4框架构建的应用程序中,我使用用户存储库中的查询查找具有特定角色的用户,如下所示: public function findByRole($role) { $qb = $this->_em->createQueryBuilder(); $qb->select('u') ->from($this->_entityName, 'u') ->where('u.roles LIKE :roles')

在基于symfony 4框架构建的应用程序中,我使用用户存储库中的查询查找具有特定角色的用户,如下所示:

public function findByRole($role)
{
    $qb = $this->_em->createQueryBuilder();
    $qb->select('u')
        ->from($this->_entityName, 'u')
        ->where('u.roles LIKE :roles')
        ->setParameter('roles', '%"'.$role.'"%');

    return $qb->getQuery()->getResult();
}
现在,这个查询通常运行良好,但每当我将它与pagerfanta结合使用时,我都会遇到一个问题。例如,每当我在控制器中使用以下各项时:

    $em = $this->getDoctrine()->getManager();
    $query = $em->getRepository(User::class)->findByRole('ROLE_ADMIN');

    $pagerfanta = $this->paginate($request, $query);
我得到错误:“调用数组上的成员函数setFirstResult()

为了解决这个问题,我使用:

    $em = $this->getDoctrine()->getManager();
    $query = $em->getRepository(User::class)->createQueryBuilder('u')
                ->andWhere( 'u.roles LIKE :role')
                ->setParameter('role', '%"ROLE_ADMIN"%');

    $pagerfanta = $this->paginate($request, $query);

这与pagerfanta一起工作没有任何问题。我只是不明白第一个查询出了什么问题(每当我不使用pagerfanta时,它都会起作用)。有什么想法吗

为了使其正常工作,只需删除“->getQuery()->getResult();”

$sql=…->setParameter(…)->getQuery()->getSQL();通过使用sql,您可以看到它的错误所在。因此,为了使其正常工作,只需删除“->getQuery()->getResult();”。谢谢