Cakephp 3 保存关联属于ToMany

Posted

技术标签:

【中文标题】Cakephp 3 保存关联属于ToMany【英文标题】:Cakephp 3 save associations belongsToMany 【发布时间】:2018-06-20 11:48:02 【问题描述】:

我需要保存表单中的关联数据。表结构如下:

我有一些与 BelongsToMany 相关联的模型(例如用户与 Medias 和 MediasObjects 相关联的模型) 用户:id、email ... 书籍:id,标题... 等等……

媒体:id、文件 .... MediasObject:id、object_name、object_id、media_id

表单返回数据如下(编辑用户后):

$data = Array
(
    [id] => 1
    [email] => 'some@email.com'
    ..
    [medias] => Array
        (
            [0] => Array
            (
              [id] = 17
            )

        )
)

我有用户 (id=1) 也有媒体 (id=17),现在我需要将关联数据保存到 MediasObject 中,如下所示:

Array(
  [object_name] => 'Users',
  [object_id] => 1,
  [media_id] => 17


我不知道应该在哪里设置 'object_name' 值?

【问题讨论】:

【参考方案1】:

您需要设置一个_joinData 属性。

$data = [
    'id' => 1,
    'media' => [
        [
            'id' => 1,
            '_joinData' => [
                'object_name' => 'Users'
            ]
        ]
    ]
];

见https://book.cakephp.org/3.0/en/orm/saving-data.html#saving-additional-data-to-the-join-table

【讨论】:

以上是关于Cakephp 3 保存关联属于ToMany的主要内容,如果未能解决你的问题,请参考以下文章

在 CakePHP 中保存新的关联记录

CakePHP 3:保存关联模型失败

在 CakePHP 3 中保存 belongsToMany 关联

CakePHP 3 不保存关联?

Cakephp 3.x 保存 hasmany 关联

CakePHP 3 保存 BelongsToMany 关联未知类型“”错误