我想在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;
不幸的是,我发现Pagination component仅适用于某个查询构建器。
有没有办法可以在分页中使用此查询?
答案 0 :(得分: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;
}