首页 > 解决方案 > 在迁移 laravel 中不使用外国是坏习惯吗?

问题描述

我是laravel的新手。在我的教程视频中,老师在迁移中 使用外来语,但是,我可以在没有它的情况下创建我的关系,只使用belongTohasMany。当我使用外文时不能轻易删除一篇文章(错误是你不能删除,因为父母外文有孩子...... ...)。我的问题是我的方式好不好?为什么?

谢谢你们

标签: laravelmigration

解决方案


你的方式很好,但我认为外键更好。如果您没有该外键,您将删除该帖子,但该帖子的所有子项(称为孤儿,因为他们不再有父项)会一直存在。为了避免外键错误,您需要先删除该帖子的所有子项,然后删除该帖子。

好消息是外键也可以为您执行此操作,因此您无需担心跟踪所有子项。在设置外键时,如果添加on delete cascade子句,在删除帖子时,数据库会自动为您删除所有帖子的孩子,删除帖子而不先删除孩子将不再导致错误。

如果您希望即使在删除帖子时也保留孩子,您可以使用on delete set null它来简单地将孩子的外键设置为 null 而不是删除记录。

这对于强制执行数据完整性非常有用(数据库应该只包含准确和有效的数据)。


推荐阅读