我有2个模型 Cprodtypes 和 Cmaterials ,它们代表给定类型和材料的产品目录。
我希望可以添加 CproductType 或 Cmaterial 中每个实体到 CproductTypes 或 Cmaterials中其他实体的链接。为此,需要一个具有以下字段的自定义联轴器(称为fastfilers):src_id,dst_id,src_obj,dst_obj。其中src_obj = 1表示 CprodType ,而src_obj = 2表示 Cmaterial 。
我不想为此使用4个单独的联接表。相反,我定义了以下 belongsToMany 关联:
$this->belongsToMany('FFProdTypes', [
'className' => 'Cprodtypes',
'foreignKey' => 'src_id',
'targetForeignKey' => 'dst_id',
'joinTable' => 'fastfilters',
'propertyName' => 'ff_prodtypes',
'conditions' => ['src_obj'=>1, 'dst_obj'=>2]
]);
Cakephp正确加载了关联数据,但是在这种情况下,我不明白如何通过 patchEntity 添加新的关联。
我试图提交以下数据,以向 Cmaterial 关联添加新的 CprodType
[
'FFProdTypes' => [
'_joinData' => [
'src_id' => (int) 2,
'dst_id' => (int) 2,
'src_obj' => (int) 2,
'dst_obj' => (int) 1,
],
]
]
然后做
$cmaterial = $this->Cmaterials->patchEntity($cmaterial, $this->request->getData(),
['associated' => ['FFProdTypes._joinData']]);
但未创建任何关联。