我有一个查询(来自谷歌地图),如下:
SELECT ( 3959 * acos( cos( radians(MY_LAT) ) * cos( radians( LATITUDE ) ) *
cos( radians( LONGITUDE ) - radians(MY_LONG) ) + sin( radians(MY_LAT) ) * sin( radians(
LATITUDE ) ) ) ) AS distance
FROM zips
ORDER BY distance
我希望这是Cakephp中的自定义查找,所以我该怎么做?
MY_LAT和MY_LONG是传入的参数。 LATITUDE和LONGITUDE是拉链表中的列。
答案 0 :(得分:1)
您可以使用地理编码器行为(https://github.com/dereuromark/tools/blob/2.0/Model/Behavior/GeocoderBehavior.php#L208)之类的行为,并使用
将其附加到您的模型$this->Model->Behaviors->attach('Tools.Geocoder');
并致电
$this->Model->setDistanceAsVirtualField($lat, $lng, $fieldName);
这样一个虚拟字段被附加,并将像任何其他正常字段一样检索和包含您的距离值。你也可以按那个字段排序/过滤。