Как написать хороший DQL для Knp Paginator
У меня есть этот запрос:
$data1 = $session->get('oficina');
$data2 = $session->get('area');
$dql = $this->getDoctrine()->getRepository('AppBundle:Registro')->createQueryBuilder('l')
-> where('l.oficina = (:data1) and l.area = (:data2)')
-> setParameter('data1', $data1)
-> setParameter('data2', $data2)
-> orderBy('l.id', 'DESC')->getQuery();
И я получил эту ошибку: Предупреждение: preg_split() ожидает, что параметр 2 будет строкой, объект задан
Я хочу использовать этот запрос с пакетом paginator knp Я отправляю запрос на paginator:
$list = $em->createQuery($dql);
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$list, /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
5/*limit per page*/
);
Вы знаете, в чем проблема с запросом???
1 ответ
Попытайся :
Я думаю, у вас есть ошибка в этой строке
-> where('l.oficina = (:data1) and l.area = (:data2)')
используй это
->Where('l.oficina = :data1')
->andWhere('l.area = :data2')
-> setParameter('data1', $data1)
-> setParameter('data2', $data2)
ИЛИ ЖЕ
$data1 = $session->get('oficina');
$data2 = $session->get('area');
$em = $this->get('doctrine.orm.entity_manager');
$dql = "SELECT l FROM AppBundle:Registro a WHERE l.oficina = '$data1' and l.area = '$data2'";
$list = $em->createQuery($dql);
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$list,
$request->query->getInt('page', 1)/*page number*/,
5,/*limit per page*/
array('defaultSortFieldName' => 'l.id', 'defaultSortDirection' => 'desc')
);