2012-02-27 147 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。