簡體   English   中英

knp分頁器返回0個結果,但查詢返回5個結果

[英]knp paginator return 0 result but query return 5 results

我嘗試使用knp分頁器進行分頁。

我在同一網站的其他地方使用它,他工作正常。

但是,現在我嘗試在其他查詢上使用它,但是我遇到了問題。

    $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個正常結果?

我的參數順序不好...當我設置參數時,我沒有按好順序設置它,請參閱:

            ->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”反向。

當您使用查詢生成器時這不是問題...但是當您導出對Paginator的查詢時,最終查詢和參數數組的順序不正確,他無法進行正確的查詢...。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM