2011-04-21 52 views
0

我有一個包含語句看起來像這樣:使用父模型數據通過包括()和條件,在CakePHP中

$this->Wijken->contain(array(
     'Theme' => array(
      'Polygon' => array(
       'PolygonPoint' 
      ) 
     ) 
    )); 

多邊形表有(其中包括)領域的「theme_id」和'wijk_id'(這是Wijken的主鍵)。

我想要的只是獲取匹配wijk_id的多邊形。

在我的腦海

所以,這將通過添加以下到多邊形陣列來實現:

'conditions' => array('wijk_id' => $this->Wijken.id) 

但是,這是行不通的。當我將值硬編碼爲1時,它可以工作,我只能得到#1的多邊形。

所以我的問題是,如何在另一個模型的條件變量(多邊形)中使用父級的模型(Wijken)變量。 或者我應該添加特殊規則到我的模型?

回答

0

而是在調用find()時傳遞包含設置。這將允許您動態傳遞Wijken標識。即:

function view($id) { 
    // assuming $id param is a wijken id 
    $contain = array(
     'Theme' => array(
      'Polygon' => array(
       'conditions' => array('Polygon.wijk_id' => $id), 
       'PolygonPoint' 
      ) 
     ) 
    ); 
    $conditions = array('Wijken.id' => $id); 
    $wijken = $this->Wijken->find('first', array('contain'=>$contain, 'conditions'=>$conditions)); 
} 
+0

Wijken.id不必被過濾。我想要的是所有的Wijken,與通訊主題和多邊形..其中多邊形需要wijken.id(wijk_id在他們的表)條件。 – 2011-04-22 06:38:10

+0

這就是上面的代碼會帶給你的。只要做一個find('all',array('contains'=> $ contains) – Tyler 2011-04-22 15:04:12

相關問題