CakePHP 2.0分页字段中的Haversine公式不起作用

CakePHP 2.0分页字段中的Haversine公式不起作用,cakephp,field,distance,pagination,haversine,Cakephp,Field,Distance,Pagination,Haversine,这是我在这个网站上的第一篇帖子,所以请友好一点 使用find()方法可以顺利完成这项工作,但当我尝试使用paginate组件运行它时,运气不佳。我只是尝试在字段选项中运行哈弗森公式来计算距离。在蛋糕书中,它说“您还可以包括其他find()选项,例如字段:”。没有提到任何警告 所以,这就是我试图运行的: $this->paginate = array( 'joins' => array( array( 'table' => 'rid

这是我在这个网站上的第一篇帖子,所以请友好一点

使用find()方法可以顺利完成这项工作,但当我尝试使用paginate组件运行它时,运气不佳。我只是尝试在字段选项中运行哈弗森公式来计算距离。在蛋糕书中,它说“您还可以包括其他find()选项,例如字段:”。没有提到任何警告

所以,这就是我试图运行的:

$this->paginate = array(
    'joins' => array(
        array(
            'table' => 'ride_types',
            'alias' => 'RideTypes',
            'type' => 'inner',
            'conditions'=>array('RideTypes.id = Rides.ride_type')
        )
    ),
    'group' => array(
        "Rides.id HAVING distance < $filter_radius AND ride_time >= '$filter_earliest_time' AND ride_time <= '$filter_latest_time' AND ride_date >= '$filter_earliest_date' AND ride_date <= '$filter_latest_date'"
    ),
    'fields' => array(
        "( 3959 * acos( cos( radians($filter_lat) ) * cos( radians( Rides.lat ) ) * cos( radians( Rides.lng ) - radians($filter_lng) ) + sin( radians($filter_lat) ) * sin( radians( Rides.lat ) ) ) ) AS distance"
    ),
    'limit' => 5,
    'page' => $paginate_page,
    'order' => array('Rides.start_time DESC'),
);

$rides = $this->paginate('Rides',$options['conditions']);
$this->paginate=array(
'连接'=>数组(
排列(
‘表’=>‘骑乘类型’,
'alias'=>'RideTypes',
'类型'=>'内部',
'条件'=>数组('RideTypes.id=Rides.ride\u type')
)
),
“组”=>数组(

“Rides.id的距离<$filter\u radius AND ride\u time>='$filter\u earlime\u time'和ride\u time='$filter\u earlime\u date'和ride\u dateDaniel这篇文章可能有答案,尽管它是基于CakePHP 1.3的。它涉及到根据聚合绑定模型


看起来您的模型名称可能有问题。如果您的应用程序遵循正确的CakePHP约定,那么您应该使用Ride.field而不是Rides.field。在CakePHP查询中,您希望引用模型而不是表名。

您是否尝试过用表名作为“distance”、“Ride\u time”等的前缀AVING Rides.distance<$filter_radius AND Rides.ride_time>=。。。