我,我使用两个表(区域和旅行)有很多关系。这些表由另一个名为regions_safaris的表连接(带有字段 - region_id $ safari-id)。我想获取满足给定标准的所有狩猎,例如5天的持续时间和给定的区域。 这应该在cakephp中实现
答案 0 :(得分:1)
这似乎更像是数据库问题而不是php问题。这里是语法(对于大多数数据库,例如MySQL)获取映射到'yourRegion'区域的所有5天safary的列表
table safari:
id
name
duration
table region:
id
name
table regions_safaris:
safari_id
region_id
select s.name
from region r, safaris_regions sr, region r, safari s
where r.name='yourRegion'
and sr.region_id=r.id and s.id=sr.safari_id and s.duration=5;
答案 1 :(得分:1)
假设您的模型正确关联。这些是我在类似情况下使用的代码行。在habtm条件下进行过滤时,我发现从具有最严格过滤器的模型开始(或者以最快的速度向下钻取数据库的模型)是有帮助的。在这种情况下,该地区。
来自Safaris控制器:
$conditions = array('conditions' => array('Region.id' => 'yourRegion', 'Safari.duration' => 5);
$this->Safari->Region->recursive = 1;
$safaris = $this->Safari->Region->find('all', $conditions);
然后你应该能够print_r($ safaris)并通过嵌套区域数组访问每个safari。即:
$safaris['Region'][0]['Safari'][0]['name']
这应该为您提供与标准匹配的第一个返回区域首次关联的safari。 print_r($ safaris)为了更好地了解数据结构,你会明白我的意思。