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 回答