首页 / 帖子
删除 Entity reference 关联的内容以后
比如Node1分别关键到Node2和Node3, Node4等三个关联. 关联完成以后删除Node2. 此时你再打印Node1的数据,会发现这条数据还存在.
4个答案
发布于:2014-07-25 20:20

我构造了一个环境,确实像你说的这样,不过首先Node1在显示的时候默认是会做判断的,所以并没有真正呈现出来,只有通过打印Node1才会发现关联还在。


另一个角度看,这也是合理的,不然删除一个节点就要判断所有与之关联的节点,并进行批量的load和save,这是很不经济的做法。

老葛
发布于:2014-07-27 11:30

针对这种Entity reference,找到一个模块,是用来管理这种连级删除的,

Entity Reference Cascade Delete:  https://www.drupal.org/project/ercd

此外,这种情况如@于志成 同学说的,一旦删除就自动连级删除所有的entity也不合理,尤其是牵扯到删除,一旦发生不测,后果不堪设想啊~

赵高欣
发布于:2014-07-27 14:44

还有个模块 Reference Delete

王斌
发布于:2014-07-27 19:34

根据具体的需求分析,说不定你的应用环境里,应该把引用的关系方向反过来,node2和node3分别去关联node1,而不是node1去关联多个(表面上就是字段应该放在node2和node3所属的内容类型里,当然如果node1也是同一个内容类型,那你应该设置该字段为单一的值)。比如og模块的小组和组内内容的关系,是内容各自去关联小组的,而不是小组去关联多个内容。

建议考虑两个点:

1.node2和node3被删除的几率是否比node1被删除的几率更大,就像组内内容比小组被删除的几率更大一样。

2.如果是node2和node3分别去主动关联node1,那么它们被删除的时候,关联记录会被自动删除,反之则不会。

个人观点,仅供参考。