php – 有没有办法让saveAll()删除无关的对象?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 有没有办法让saveAll()删除无关的对象?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1077字,纯文字阅读大概需要2分钟。
内容图文
![php – 有没有办法让saveAll()删除无关的对象?](/upload/InfoBanner/zyjiaocheng/813/bde613ac2cd74e0692ad91c2c99f2d67.jpg)
我的主机对象有许多与之关联的选项对象.在编辑表单中,用户可以(de)选择选项并保存新的关联集.这是使用发布数据上的saveAll()实现的.结果是
>主机(主)对象已更新,
>更新先前和新关联中包含的选项(关联)对象,以及
>创建未包含在先前关联中但包含在新关联中的选项对象.
但是没有发生的事情是
>删除先前关联中包含但未包含在新关联中的选项对象.
问题:saveAll()也可以这样做,数据结构如何实现这种效果?
相关信息:
我处理编辑表单的代码实际上更复杂(因此我在这里没有引用它),但它导致了书中描述的数据结构:
( [Host] => ( ... host object fields ... ),
[Option] => ( [0] => ( ... first option object fields ... ),
...
[n] => ( ... nth option object fields ... )
)
)
现在,如果原始主机具有未包含在0..n数组中的关联选项,则saveAll()将不会检测到此选项,并且不会删除该关联对象.
不确定这是否相关,但我使用的是CakePHP 1.3.
解决方法:
HABTM删除所有相关记录,然后重新创建所需内容.正如PawelMysior建议的那样,您可以通过在保存之前手动删除关联记录来使用hasMany实现此目的.但是,危险在于保存失败,你失去了以前的状态.
我会使用GJ解决方案的变体并在成功保存后删除它们,而是循环遍历冗余ID数组并使用Cake的Model-> del()方法.这样您就可以保留所有内置错误处理.
内容总结
以上是互联网集市为您收集整理的php – 有没有办法让saveAll()删除无关的对象?全部内容,希望文章能够帮你解决php – 有没有办法让saveAll()删除无关的对象?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。