Столы
restaurants
cuisines
cuisines_restaurants
Модель ресторана и кухни настроены на HABTM друг друга.
Я пытаюсь получить список ресторанов с разбивкой по страницам, где Cuisine.name = 'italian' (пример), но постоянно получаю эту ошибку:
1054: Unknown column 'Cuisine.name' in 'where clause'
Фактический запрос, который он строит:
SELECT `Restaurant`.`id`, `Restaurant`.`type` .....
`Restaurant`.`modified`, `Restaurant`.`user_id`, `User`.`display_name`,
`User`.`username`, `User`.`id`, `City`.`id`,`City`.`lat` .....
FROM `restaurants` AS `Restaurant` LEFT JOIN `users` AS `User` ON
(`Restaurant`.`user_id` = `User`.`id`) LEFT JOIN `cities` AS `City` ON
(`Restaurant`.`city_id` = `City`.`id`) WHERE `Cuisine`.`name` = 'italian'
LIMIT 10
Части "....." - это просто дополнительные поля, которые я удалил, чтобы сократить запрос, чтобы показать вам.
Я не профессионал в CakePHP, так что, надеюсь, есть какая-то явная ошибка. Я называю пагинат так:
$this->paginate = array(
'conditions' => $opts,
'limit' => 10,
);
$data = $this->paginate('Restaurant');
$this->set('data', $data);
$ opts - это массив опций, одним из которых является «Cuisine.name» => «итальянский»
Я также пытался установить $ this-> Restaurant-> recursive = 2; но это, похоже, ничего не делает (и я полагаю, что не должен был этого делать)
Любая помощь или направление с благодарностью.
EDIT
models/cuisine.php
var $hasAndBelongsToMany = array('Restaurant');
models/restaurant.php
var $hasAndBelongsToMany = array(
'Cuisine' => array(
'order' => 'Cuisine.name ASC'
),
'Feature' => array(
'order' => 'Feature.name ASC'
),
'Event' => array(
'order' => 'Event.start_date ASC'
)
);