Это мой первый пост на этом сайте, так что будьте любезны.
У меня нет проблем с выполнением этой работы с помощью метода 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']);
Я получаю такую ошибку:
Ошибка: SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец «расстояние» в «имеющем предложении»
SQL-запрос: SELECT COUNT (*) AS count
FROM _3 _._ 4_ AS Rides
inner JOIN _6 _._ 7_ AS RideTypes
ON (_9 _._ 10_ = _11 _._ 12_) WHERE 1 = 1 GROUP BY _13 _._ 14_ HAVING distance ‹5
Опять же, если я применяю все эти же самые параметры к методу find ('all'), он работает отлично, поэтому я знаю, что логика верна ... или, по крайней мере, работоспособна.
и так, что здесь происходит?