可能重複:
How do I query a table based with HABTM relationship while providing additional conditions in CakePHP?如何找到以下數據
I,M使用具有多對多的關係兩個表(區,狩獵)。這些表由另一個名爲regions_safaris的表連接(字段爲region_id $ safari-id)。我想獲取符合特定標準的所有狩獵之旅,例如持續5天,並在特定地區。 這應該在cakephp執行
可能重複:
How do I query a table based with HABTM relationship while providing additional conditions in CakePHP?如何找到以下數據
I,M使用具有多對多的關係兩個表(區,狩獵)。這些表由另一個名爲regions_safaris的表連接(字段爲region_id $ safari-id)。我想獲取符合特定標準的所有狩獵之旅,例如持續5天,並在特定地區。 這應該在cakephp執行
這似乎更像是一個數據庫問題,而不是一個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;
假設你有正確關聯的模型的所有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)可以更好地瞭解數據結構,你會明白我的意思。
謝謝。這工作得很好,但我怎麼能在cakephp中實現相同的概念 – juma 2009-03-02 12:14:55