在关联中保存数据 table (belonsToMany) Cakephp 3

Save data in association table (belonsToMany) Cakephp 3

我有活动和行动。每个广告系列可以有无限的操作(甚至可以重复)。

Cakephp 文档说您可以保存与 actions._ids 的关联,但我对此有疑问。每个 campaign_action 都有一个持续时间。然后,如果我使用 actions._ids 我可以毫无问题地保存关系,但我无法在每个 campaign_duration.

中保存持续时间

现在我正在保存数据宽度 actions._joinData.action_id 和 actions._joinData.duration 并且有效!但问题是 cakephp 创建了一个 新操作 并保存了与创建的新操作的关系。示例:

我需要在活动 1 中保存动作 ID 3 和 5 宽度分别为 25 秒和 40 秒。

BBDD 中的插入应为 campaign_id 1 - action_id 3 - 持续时间 25 和 campaign_id 1 - action_id 5 - 持续时间 40。 现在有了 _joinData,它为我节省了:新动作宽度 id 8(例如)和新动作宽度 id 9(例如)并且在 campaign_actions 中:campaign_id 1 - action_id 8 -持续时间 25 和 campaign_id 1 - action_id 9 - 持续时间 40

我该怎么做?

如果没有蛋糕,我是否必须手动完成?

谢谢。

编辑:

这是我要保存的数据(仅限操作):

 "actions" => array:1 [▼
    0 => array:1 [▼
      "_joinData" => array:3 [▼
        "campaign_action_name" => "A"
        "action_id" => "3"
        "duracion" => "4"
      ]
    ]
  ]

这是我的结果实体:

   "actions": array:1 [▼
    0 => Action {#236 ▼
      +"_joinData": CampaignsAction {#266 ▼
        +"campaign_action_name": "A"
        +"action_id": 3
        +"duracion": 4.0
        +"[new]": true
        +"[accessible]": array:6 [▶]
        +"[dirty]": array:3 [▶]
        +"[original]": []
        +"[virtual]": []
        +"[errors]": []
        +"[invalid]": []
        +"[repository]": "CampaignsActions"
      }
      +"[new]": true     // HERE IS THE PROBLEM I THINK
      +"[accessible]": array:21 [▶]
      +"[dirty]": array:1 [▶]
      +"[original]": []
      +"[virtual]": []
      +"[errors]": []
      +"[invalid]": []
      +"[repository]": "Actions"
    }
  ]

我认为你的数据结构在打补丁之前应该是这样的:

actions => [
    0 => [
        id  => 3,
        _joinData => [
            duration => 40,
        ],
    ],
    1 => [
        id  => 5,
        _joinData => [
            duration => 25,
        ],
    ],
]

尝试用这样的数据修补您的活动实体;如果它不起作用,请使用您要修补的确切数据和生成的实体更新问题。