2013-10-25 134 views
0

我尝试做KNP分页程序分页。KNP分页程序返回0的结果,但查询返回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”返回此DATAS:

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结果此查询。现在 ,如果我尝试做“$查询 - > 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']); 

我倒“LATP”与“LATN”和“lonP”与“lonN”。

这不是一个问题,当你使用查询生成器...但是,当您导出查询分页程序,最终的查询和参数数组是不是在良好的秩序,他不能做一个正确的查询....