【问题标题】:Pagerfanta does not like my doctrine queryPagerfanta 不喜欢我的教义查询
【发布时间】:2018-06-03 11:09:24
【问题描述】:

在一个基于 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,它就可以工作)。有任何想法吗?

【问题讨论】:

  • $sql = ...->setParameter(...)->getQuery()->getSQL();走一条sql就可以看出哪里错了。
  • 所以为了让它工作,只需删除“->getQuery()->getResult();”。谢谢。

标签: doctrine-orm symfony4 pagerfanta


【解决方案1】:

为了使它工作,只需删除“->getQuery()->getResult();”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 2012-09-18
    • 1970-01-01
    相关资源
    最近更新 更多