Как написать хороший 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')
        );
Другие вопросы по тегам