0

MySQLで循環クエリを使用してページネーションしたいと思います。つまり、これです:

SELECT *,
  (
      6371 * acos(
              cos( radians( $lat ) ) * cos( radians( lat ) )
            * cos( radians( lng )
            - radians($lng)
      )
    + sin( radians($lat)
   ) * sin( radians( lat ) ) ) ) AS distance
  FROM {$this->table} HAVING distance < $dist
  ORDER BY distance LIMIT $offset , $limit;

残念ながら、ページネーション コンポーネントは一部のクエリ ビルダーを介してのみ機能するようです。

このクエリをページネーションで使用する方法はありますか?

4

1 に答える 1

0

したがって、次のように、クラス宣言の後に仮想フィールドを追加できることがわかります。

public function addDistanceVirtualField($lng, $lat) {
    $this->virtualFields['distance'] = <<<EOT
    (
      6371 * acos(
              cos( radians( $lat) ) * cos( radians( {$Model->alias}.lat ) )
            * cos( radians( {$Model->alias}.lng )
            - radians($lng)
      )
    + sin( radians($lat)
   ) * sin( radians( {$Model->alias}.lat ) ) ) )
EOT;
}
于 2013-08-20T20:10:55.570 に答える