如何在CakePHP虚拟字段(hasrsine公式)中将控制器的参数放入?

时间:2013-07-31 23:35:45

标签: cakephp cakephp-2.0 cakephp-appmodel

我想在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)。现在我该怎样才能动态改变这个值!?

1 个答案:

答案 0 :(得分: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 ) ) ) )';

它动态地从Controller动态分配虚拟字段。