我很好奇我错过了什么。只有一个例子可以帮助解释,但首先是句子问题:Inventory 和 InventoryCategory - 都有图像关联。当我查看单个 InventoryCategory 和相关 Inventory 时,我想要两个图像关联。目前我只返回了 InventoryCategory->Image。库存元素不会返回任何图像。这就是我在模型中的内容:
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;
}
最佳答案
如果您尝试在单个 find() 中拉回两个图像关系,那么您将会遇到问题,因为 CakePHP 只会选择这些相同的命名关系之一,它需要以某种方式消除歧义,并且会要么抛出错误,要么只选择第一个找到的关系(这似乎就是您所看到的)。
我建议在这两种情况下将与 Media.MediaImage 的关系称为唯一的,例如InventoryImage 和 InventoryCategoryImage 而不仅仅是图像。
关于CakePHP - 扩展模型关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9459990/