Пагерфанту не нравится мой доктринальный запрос - PullRequest
0 голосов
/ 03 июня 2018

В приложении, построенном на фреймворке 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();
}

Теперь этот запрос в целом работает хорошо, но всякий раз, когда я использую его в сочетании с пагерфантом, я сталкиваюсь с проблемой.Например, всякий раз, когда я использую следующее в контроллере:

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

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

я получаю ошибку: «Вызов функции-члена setFirstResult () on array».

Чтобы обойти эту проблему, я использую:

    $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);

Работает с пагерфантом без проблем.Я просто не понимаю, что не так с первым запросом (который работает всякий раз, когда я не использую пагерфанта).Есть идеи?

1 Ответ

0 голосов
/ 04 июня 2018

Чтобы заставить его работать, просто удалите "-> getQuery () -> getResult ();".

...