2012-02-27 231 views
3

我很好奇我錯過了什麼。只有一個例子可以幫助解釋,但這裏是第一個問題:Inventory和InventoryCategory - 都有圖像關聯。當我查看單個庫存類別和相關庫存時,我希望這兩個圖像關聯。目前我只返回InventoryCategory-> Image。沒有圖像爲庫存項目返回。這是我的模型:CakePHP - 擴展模型關聯

Inventory: 
public $belongsTo = 
    array(
    'User' 
    , 'InventoryCategory' 
    , 
); 

public $hasMany = 
    array(
    'Image' => array 
    (
     'className' => 'Media.MediaImage' 
    , 'foreignKey' => 'foreign_key' 
    , 'conditions' => array(
      'Image.model' => 'Inventory' 
     , 'Image.group' => 'Image' 
     , 
     ) 
    , 'dependent' => true 
    , 'order' => 'Image.rank ASC, Image.id ASC' 
    ) 
    , 
); 

public function containedModels() 
{ 
    $contain = array(
     'Image' 
    , 'User' 
    , 'InventoryCategory' 
    , 
); 
    return $contain; 
} 
InventoryCategory 
public $hasOne = 
    array(
    'Image' => array 
    (
     'className' => 'Media.MediaImage' 
    , 'foreignKey' => 'foreign_key' 
    , 'conditions' => array(
      'Image.model' => 'InventoryCategory' 
     , 'Image.group' => 'Image' 
     , 
     ) 
    , 'dependent' => true 
    , 
    ) 
    , 
); 

public $hasMany = 
    array(
    'Inventory' 
    , 
); 

public function containedModels() 
{ 
    $contain = array(
     'Image' 
    , 'Inventory' 
    , 
); 
    return $contain; 
} 

回答

2

如果你想拉回到一個單一的發現(在這兩個圖像的關係),那麼你將有問題的CakePHP只會選擇一個那些相同的命名關係,它需要以某種方式消除歧義,並會拋出一個錯誤或只選擇第一個找到的關係(這似乎是你所看到的)。

我建議調用與Media.MediaImage在兩種情況下唯一的關係,例如, InventoryImage和InventoryCategoryImage,而不僅僅是Image。