Как мне запросить таблицу, основанную на связи HABTM, предоставляя дополнительные условия в CakePHP?
-
03-07-2019 - |
Вопрос
Как я могу сделать это в CakePHP:Я использую две таблицы (regions
и safaris
) наличие отношений "многие ко многим".Таблицы соединяются другой таблицей, называемой regions_safaris
(с полями region_id
& safari_id
).Я хочу собрать все safaris
соответствие заданным критериям, таким как продолжительность в 5 дней и в данном регионе.Это должно быть реализовано в CakePHP
Решение
juma,
Пожалуйста, воздержитесь от публикации несколько раз так быстро.
Для получения дополнительной информации, пожалуйста, ознакомьтесь с отношением Cakebook "Имеет-И-принадлежит-многим".Это именно то, что вы описываете.Видишь http://book.cakephp.org/view/83/hasAndBelongsToMany-HABTM
Короче говоря, предполагая, что у вас правильно настроены модели Cake (с установленным отношением HABTM между regions, safaris и regions_safaris;проверьте индекс 'JoinTable' в массиве var $hasAndBelongsToMany в моделях), вы бы сделали это:
class SafariModel extends AppModel
{
var $name = 'Safari';
var $hasAndBelongsToMany = array( 'Tag'=>array( ..., 'joinTable'=>'regions_safaris', ... );
function findSafaris( $duration = 5, $region = null )
{
return $this->find('all', array('conditions'=>array('Region.region_name'=>$region, 'Safari.duration'=>$duration) );
}
... // rest of class
}