我正在使用具有多对多关系的两个表(区域和 safaris)。这些表由另一个名为 region_safaris 的表连接(带有字段 - region_id $ safari-id)。我想获取满足给定标准的所有 safaris,例如 5 天和给定区域的持续时间。这应该在 cakephp 中实现
juma
问问题
138 次
2 回答
1
这似乎更像是数据库问题而不是 php 问题。这是获取映射到区域“yourRegion”的所有 5 天游猎列表的语法(对于大多数数据库,例如 MySQL)
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;
于 2009-03-02T11:47:04.970 回答
1
假设您的模型正确关联。这些是我将在类似情况下使用的代码行。在对 habtm 条件进行过滤时,我发现从具有最严格过滤器的模型开始(或以最快的速度查询数据库的模型)会很有帮助。在这种情况下,该地区。
从 Safari 控制器:
$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。IE:
$safaris['Region'][0]['Safari'][0]['name']
这应该为您提供与条件匹配的第一个返回的区域第一个关联的 safari。print_r($safaris) 以更好地了解数据结构,您将明白我的意思。
于 2009-03-02T14:31:12.203 回答