添加具有自定义可接合条件的belongsToMany关联

时间:2019-09-03 11:38:37

标签: cakephp orm associations cakephp-3.x jointable

我有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']]);

但未创建任何关联。

0 个答案:

没有答案