2009-03-02 29 views

回答

1

這似乎更像是一個數據庫問題,而不是一個PHP問題。這裏的語法(例如像MySQL的大多數數據塊)來獲取映射到區域「yourRegion」

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

謝謝。這工作得很好,但我怎麼能在cakephp中實現相同的概念 – juma 2009-03-02 12:14:55

1

假設你有正確關聯的模型的所有5日safaries的列表。這些是我在類似情況下使用的代碼行。在habtm條件下進行過濾時,我發現從具有最嚴格過濾器的模型(或將數據庫以最快速度剝離的模型)開始很有幫助。在這種情況下,該地區。

從旅行控制器:

$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['Region'][0]['Safari'][0]['name'] 

這應該給你返回的第一個地區符合條件第一個關聯野生動物園。 print_r($ safaris)可以更好地瞭解數據結構,你會明白我的意思。