laravel - 在迁移 laravel 中不使用外国是坏习惯吗?
问题描述
我是laravel的新手。在我的教程视频中,老师在迁移中 使用外来语,但是,我可以在没有它的情况下创建我的关系,只使用belongTo和hasMany。当我使用外文时不能轻易删除一篇文章(错误是你不能删除,因为父母外文有孩子...... ...)。我的问题是我的方式好不好?为什么?
谢谢你们
解决方案
你的方式很好,但我认为外键更好。如果您没有该外键,您将删除该帖子,但该帖子的所有子项(称为孤儿,因为他们不再有父项)会一直存在。为了避免外键错误,您需要先删除该帖子的所有子项,然后删除该帖子。
好消息是外键也可以为您执行此操作,因此您无需担心跟踪所有子项。在设置外键时,如果添加on delete cascade
子句,在删除帖子时,数据库会自动为您删除所有帖子的孩子,删除帖子而不先删除孩子将不再导致错误。
如果您希望即使在删除帖子时也保留孩子,您可以使用on delete set null
它来简单地将孩子的外键设置为 null 而不是删除记录。
这对于强制执行数据完整性非常有用(数据库应该只包含准确和有效的数据)。
推荐阅读
- javascript - reactjs使用对象键生成html
- c++ - 交换运算符 + 重载导致无限递归
- xslt - 获取动态子字符串 xslt
- python-3.x - 为熊猫数据框中的单元格设置值
- mysql - Kubernetes entrypoint.sh 中的 Mariadb 10.4 在临时服务器上失败
- android - 如何尝试在获取数据中成功捕获 val?
- java - 如何通过向超类构造函数添加参数来在 Java 中构建构造函数?
- javascript - 将 Async/Await 与 Array.map 一起使用
- c# - 使用 C# 上的 SqlClient 获取列是否可为空(声明为非空或隐式声明为空)
- java - TagesdienstC.jar 中没有主清单属性