2013-10-02 73 views
0

我爲此搜索了一些,但我甚至不知道該怎麼稱呼它。CakePHP Containable:深度關聯中的同一模型

在一個簡化版本,我有這些模型:

  • Person(ID,姓名) - 的hasMany:ArrivalDate
  • Country(ID,姓名) - 的hasMany:Person
  • ArrivalDate(ID, (類名=>Person

正如你所看到的,我試圖讓人們的到來日期和推銷員在一張桌子上。

檢索數據時,我使用可容納的行爲來獲取我想要的模型。

$person = $this->Person->find('first', array(
    'conditions' => array('Person.id' => $id), 
    'contain' => array(
     'Country', 
     'ArrivalDate' 
    ) 
)); 

但問題是:如何「遏制」,在這個Salesman

Salesman是隻爲Person的別名,如果我包含Person模型我只是得到父數據。如果我嘗試包含別名(Salesman),則會出現錯誤。

+0

這就是所謂的自引用協會工作。 –

+0

@Nebojsac謝謝,這很有道理。 – mtwell

回答

0
'contain' => array(
     'Country', 
     'ArrivalDate', 
     'ArrivalDate.Salesman' => array(insert needed fields here ...) 
    ) 

應該在你的情況

+0

謝謝,很簡單。我發現我的問題在Person模型中被虛擬字段複雜化了。 – mtwell