- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
之前问过,但仍然蒙在鼓里。
cakePHP HABTM, am I getting it all wrong?
会再试一次:
我有两个表:stores
和 managers
我想创建一个新表,managers_stores,并用它来保存每个商店的经理的完整列表。
我知道每个提供完整记录数据的 save()
操作(正如我打算做的那样)将导致删除表行,并且仅保留新记录。
对于我的需求来说,这是一种不受欢迎的行为。那么,我应该如何管理我的应用程序的 HABTM 信息以及删除我保存的数据背后的想法是什么?!
谢谢
最佳答案
save()
不会删除任何内容,只有使用 saveAll()
保存时才会截断您所在特定模型的 managers_stores
条目保存,如果关系的唯一
值为true
。手册中并未完全明确这一点:
unique:
Iftrue
(default value) cake will first delete existing relationship records in the foreign keys table before inserting new ones, when updating a record. So existing associations need to be passed again when updating.http://book.cakephp.org/1.3/en/view/1044/hasAndBelongsToMany-HABTM
每当您 save()
一条单独的记录时,只有该条记录会被触及。
当您在同一个 go 中 saveAll()
一条 (例如,Manager
) 记录以及关联的 Store
记录时,managers_stores
链接将被重置,并且只有您保存的记录中的商店才会与管理器关联。例如。 (伪代码):
Manager->saveAll(array('Manager' => ..., 'Store' => array(4, 5, 6)))
因此,如果您不喜欢这种行为,请将关联中的 unique
值设置为 false
,或者手动管理 HABTM 记录。老实说,对于任何半复杂的应用程序,依赖 Cake 对 HABTM 关系的自动处理可能会变得非常脆弱且难以调试,因此我总是自己管理 HABTM 记录。
$this->Manager->save(...);
$this->Manager->ManagersStore->save(array('manager_id' => $this->Manager->id,
'store_id' => 42));
关于CakePHP HABTM - 我不明白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8773842/
我是一名优秀的程序员,十分优秀!