Laravel 不要养成坏习惯';不要在迁移过程中使用外国语言?
我是新来的。在我的教程视频中,老师在迁移中使用外文,但是,我可以在没有外文的情况下创建我的关系,只使用belongTo,并且有很多。当我使用外文时,无法轻松删除一篇帖子(错误是您无法删除,因为外文家长有孩子……)。 我的问题是我的方式好还是不好?为什么Laravel 不要养成坏习惯';不要在迁移过程中使用外国语言?,laravel,migration,Laravel,Migration,我是新来的。在我的教程视频中,老师在迁移中使用外文,但是,我可以在没有外文的情况下创建我的关系,只使用belongTo,并且有很多。当我使用外文时,无法轻松删除一篇帖子(错误是您无法删除,因为外文家长有孩子……)。 我的问题是我的方式好还是不好?为什么 谢谢大家你的方法很好,但我认为外键更好。如果你没有外键,你会删除帖子,但是帖子的所有孩子(称为孤儿,因为他们不再有父母)都会留下来。为了避免外键错误,您需要先删除该帖子的所有子项,然后删除该帖子 好消息是外键也可以帮你做到这一点,所以你不必担心跟
谢谢大家你的方法很好,但我认为外键更好。如果你没有外键,你会删除帖子,但是帖子的所有孩子(称为孤儿,因为他们不再有父母)都会留下来。为了避免外键错误,您需要先删除该帖子的所有子项,然后删除该帖子 好消息是外键也可以帮你做到这一点,所以你不必担心跟踪所有的孩子。设置外键时,如果在删除帖子时添加
on delete cascade
子句,则数据库将自动为您删除帖子的所有子项,并且在不首先删除子项的情况下删除帖子将不再导致错误
如果您希望在删除帖子时保留子项,您可以使用delete set null上的
,它只需将子项的外键设置为null,而不是删除记录
这对于加强数据完整性非常有用(数据库应该只包含准确有效的数据) 你的方法很好,但我认为外键更好。如果你没有外键,你会删除帖子,但是帖子的所有孩子(称为孤儿,因为他们不再有父母)都会留下来。为了避免外键错误,您需要先删除该帖子的所有子项,然后删除该帖子 好消息是外键也可以帮你做到这一点,所以你不必担心跟踪所有的孩子。设置外键时,如果在删除帖子时添加
on delete cascade
子句,则数据库将自动为您删除帖子的所有子项,并且在不首先删除子项的情况下删除帖子将不再导致错误
如果您希望在删除帖子时保留子项,您可以使用delete set null上的
,它只需将子项的外键设置为null,而不是删除记录
这对于加强数据完整性非常有用(数据库应该只包含准确有效的数据) 答案实际上不是“这是Laravel的良好实践”而是“这是数据库管理的良好实践” 关于使用外键的好的一面和坏的一面,有很多关于这个主题的文章。下面是关于DBA堆栈交换的一个很好的解释
我个人的偏好是使用它们来维护数据的完整性。真正的力量来自于向关系中添加级联删除(如果适用于您的设计) 答案实际上不是“这是Laravel的良好实践”而是“这是数据库管理的良好实践” 关于使用外键的好的一面和坏的一面,有很多关于这个主题的文章。下面是关于DBA堆栈交换的一个很好的解释
我个人的偏好是使用它们来维护数据的完整性。真正的力量来自于向关系中添加级联删除(如果适用于您的设计) 这实际上取决于您希望数据库有多好。在数据库中使用外键的主要原因是
- 防止破坏表之间链接的操作
- 这将防止将无效数据插入外键列,因为它必须指向现有值
- 另外,定义外键可以根据数据库加快查询速度。我不知道确切的毫秒数,但如果我找到了,我会发布它
- 外键是定义数据库中表之间关系的方法,而Laravel
或belongsTo()
是定义Laravel中表之间关系的方法hasMany()
- 防止破坏表之间链接的操作
- 这将防止将无效数据插入外键列,因为它必须指向现有值
- 另外,定义外键可以根据数据库加快查询速度。我不知道确切的毫秒数,但如果我找到了,我会发布它
- 外键是定义数据库中表之间关系的方法,而Laravel
或belongsTo()
是定义Laravel中表之间关系的方法hasMany()