是否可以使用 Cakephp 中的 saveAll 一次将所有相关记录插入到 HABTM 中?
Posted
技术标签:
【中文标题】是否可以使用 Cakephp 中的 saveAll 一次将所有相关记录插入到 HABTM 中?【英文标题】:Is it possible to insert all related records in a HABTM at once with saveAll in Cakephp? 【发布时间】:2012-07-02 23:27:59 【问题描述】:我有两个模型:Action HABTM Image
我没有表单,因为我正在使用 cakephp 之外的代码生成 Post 数据。在帖子中,我将此数据发送到要保存的 ActionController:
data[Action][id] = 5e0ece37-bc8a-4bb9-a95d-1572dcfb4a96
data[Action][action_type_id] = 69c34b29-c247-11e1-b880-f46d04737d8a
data[Image][0][id] = 9d8c1ade-2b1b-48be-a4be-f9d3176601fc
data[Image][0][url] = file%3A%2F%2F%2Fmnt%2Fsdcard%2FDCIM%2FCamera%220120702_140539.jpg
data[Image][0][action_id] = 5e0ece37-bc8a-4bb9-a95d-1572dcfb4a96
data[Image][1][id] = 7cc3f6e4-7143-41ef-b98d-a766b8b1fffe
data[Image][1][url] = file%3A%2F%2F%2Fmnt%2Fsdcard%2FDCIM%2FCamera%220130702_140539.jpg
data[Image][1][action_id] = 5e0ece37-bc8a-4bb9-a95d-1572dcfb4a96
到目前为止,当我调用 saveAll($this->data) 时,只保存了 Action。我一直无法找到同时保存两个相关模型的示例,但只有一个模型和连接表中的记录(actions_images)。 ¿ 有没有办法用 saveAll 做到这一点? ¿ 或者我需要单独保存模型吗?
【问题讨论】:
【参考方案1】:可能只是数组的格式需要不同。
烹饪书的这一章应该有所帮助:Saving Related Model Data (HABTM)
【讨论】:
感谢您的回答,但在这些示例中,仅插入了关系的一侧,以及连接表上的一条记录,以与另一个相关表上已插入的记录链接。我试图做的是同时插入 HABTM 关系的两侧(当然还包括关联它们的连接表记录),例如有很多示例:book.cakephp.org/2.0/en/models/…(在他们保存主和详细记录一次) 好吧,毕竟它可以工作,但你必须使用连接模型,而不是 HABTM,并从实际连接模型(在本例中为“ActionsImage”)调用 saveAll,它仅适用于保存一次一个关系。至少它在一个事务中将所有三个相关的行保存到数据库中。以上是关于是否可以使用 Cakephp 中的 saveAll 一次将所有相关记录插入到 HABTM 中?的主要内容,如果未能解决你的问题,请参考以下文章
Cakephp - saveAll 和 beforeSave
cakephp:使用 saveAll(),导入的(非表单相关的)关联数据不保存