2009-03-02 58 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'));