2009-03-02 72 views
-1

可能重复:
How do I query a table based with HABTM relationship while providing additional conditions in CakePHP?我怎样才能在CakePHP中实现这个

请帮助我实现这个CakePHP中

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; 
+0

你需要更加具体的关于你在哪里挣扎 – 2009-03-02 12:29:20

回答

1

我不知道具体是什么你正在努力,但你可以通过从选择标准中分离出连接条件来使你的查询更加清晰:

select s.name 
from safari s 
inner join regions_safaris sr on(s.id=sr.safari_id) 
inner join region r on(sr.region_id=r.id) 
where r.name='yourRegion' 
and s.duration=5; 

您的查询也错误地使用了safaris_regions而不是regions_safaris,并且使区域表别名两次。

1

您应该将区域表更改为区域,并将safari表更改为safaries以使其与cakephp一起使用。在建立模型中的关系之后,您将使用查找。

//safaries_controller.php 
$this->Safari->find('all', array('fields'=>'Safari.name', 'conditions'=>array('Region.name'=>'yourRegion'));