1

我想在我的 CakePHP 查找查询中使用 hasrsine 公式来返回给定半径和纬度/经度对的位置。我刚刚阅读了 CakePHP 中的虚拟字段,但就我而言,我需要传递这 3 个参数。我该如何解决这个问题?

public $virtualFields = array(

'distance' => '( 3959 * acos( cos( radians(37) ) * cos( radians( Location.latitude ) ) *     cos( radians( Location.longitude ) - radians(-122) ) + sin( radians(37) ) * sin(   radians( Location.latitude ) ) ) )',

);

上面的虚拟字段工作正常,它直接返回从表中的点到公式中指定的值的距离 (37,-122)。现在我怎样才能动态改变这个值!?

4

1 回答 1

1

它对我来说是这样的:

$this->Location->virtualFields['distance'] = '( 3959 * acos( cos( radians(' . $latitude .      ') 

) * cos( radians( Location.latitude ) ) * cos( 

radians( Location.longitude ) - radians(' . $longitude . ') ) + sin( radians(' . 

$latitude . ') ) * sin( radians( 

Location.latitude ) ) ) )';

它从控制器动态分配虚拟字段。

于 2013-07-31T23:47:42.257 回答