2013-10-25 2 views
0

Я пытаюсь сделать разбиение на страницы с помощью paginator.knp paginator return 0 результат, но запрос return 5 результатов

Я использую его в другом месте на том же сайте, и он отлично работает.

Но теперь я пытаюсь использовать его по другому запросу, и у меня есть проблема.

$query = $src->getQuery(); 
    //die(print_r($query->getDQL())); 
    //die(print_r($query->getParameters())); 
    $paginator = $this->get('knp_paginator'); 
    $paginator = $paginator->paginate(
     $query, 
     $this->get('request')->query->get('page', 1), 
     15 
    ); 

$ src - это специальная услуга для создания моего запроса. Жребий линия «getDQL» вернуть этот DQL:

SELECT p FROM YOUProductBundle:Product p INNER JOIN p.boutique b INNER JOIN p.material m INNER JOIN p.cat1 cat WHERE p.stock > 0 AND p.type = :type AND cat.id = :cat AND b.latitude >= :latN AND b.latitude <= :latP AND b.longitude >= :lonN AND b.longitude <= :lonP AND distance(b.latitude,b.longitude,48.583148,7.747882000000004) <= :rayon ORDER BY m.prix ASC 

Линия штампа «getParameters» вернуть это ДАННЫЕ:

Doctrine\Common\Collections\ArrayCollection Object 
(
[_elements:Doctrine\Common\Collections\ArrayCollection:private] => Array 
    (
     [0] => Doctrine\ORM\Query\Parameter Object 
      (
       [name:Doctrine\ORM\Query\Parameter:private] => type 
       [value:Doctrine\ORM\Query\Parameter:private] => material 
       [type:Doctrine\ORM\Query\Parameter:private] => 2 
      ) 

     [1] => Doctrine\ORM\Query\Parameter Object 
      (
       [name:Doctrine\ORM\Query\Parameter:private] => cat 
       [value:Doctrine\ORM\Query\Parameter:private] => 21 
       [type:Doctrine\ORM\Query\Parameter:private] => integer 
      ) 

     [2] => Doctrine\ORM\Query\Parameter Object 
      (
       [name:Doctrine\ORM\Query\Parameter:private] => latP 
       [value:Doctrine\ORM\Query\Parameter:private] => 49.257639204439 
       [type:Doctrine\ORM\Query\Parameter:private] => 2 
      ) 

     [3] => Doctrine\ORM\Query\Parameter Object 
      (
       [name:Doctrine\ORM\Query\Parameter:private] => latN 
       [value:Doctrine\ORM\Query\Parameter:private] => 47.908656795561 
       [type:Doctrine\ORM\Query\Parameter:private] => 2 
      ) 

     [4] => Doctrine\ORM\Query\Parameter Object 
      (
       [name:Doctrine\ORM\Query\Parameter:private] => lonP 
       [value:Doctrine\ORM\Query\Parameter:private] => 8.7674709750602 
       [type:Doctrine\ORM\Query\Parameter:private] => 2 
      ) 

     [5] => Doctrine\ORM\Query\Parameter Object 
      (
       [name:Doctrine\ORM\Query\Parameter:private] => lonN 
       [value:Doctrine\ORM\Query\Parameter:private] => 6.7282930249398 
       [type:Doctrine\ORM\Query\Parameter:private] => 2 
      ) 

     [6] => Doctrine\ORM\Query\Parameter Object 
      (
       [name:Doctrine\ORM\Query\Parameter:private] => rayon 
       [value:Doctrine\ORM\Query\Parameter:private] => 75 
       [type:Doctrine\ORM\Query\Parameter:private] => 2 
      ) 

    ) 

) 

У меня нет какой-либо ошибки, но у меня есть 0 результат для этого запроса , Теперь, если я попытаюсь сделать «$ query-> getArrayResult()», я получаю 5 результатов!

Почему постраничный получатель не получает 5 обычных результатов?

ответ

0

Порядок моих параметров не хорошо ... Когда я установить параметр, я не поставил его в хорошем состоянии, см:

  ->andWhere('b.latitude >= :latN') 
      ->andWhere('b.latitude <= :latP') 
      ->andWhere('b.longitude >= :lonN') 
      ->andWhere('b.longitude <= :lonP') 
      ->andWhere('distance(b.latitude,b.longitude,'.$datas['lat'].','.$datas['lon'].') <= :rayon') 
      ->setParameter('latP',$latP) 
      ->setParameter('latN',$latN) 
      ->setParameter('lonP',$lonP) 
      ->setParameter('lonN',$lonN) 
      ->setParameter('rayon',$datas['search']); 

I обратной "latP" с "Latn", и "lonP" с "lonN".

Это не проблема при использовании построителя запросов ... но при экспорте запроса на Paginator окончательный запрос и массив параметров не в порядке, он не может выполнить правильный запрос ....