Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 不要养成坏习惯';不要在迁移过程中使用外国语言?_Laravel_Migration - Fatal编程技术网

Laravel 不要养成坏习惯';不要在迁移过程中使用外国语言?

Laravel 不要养成坏习惯';不要在迁移过程中使用外国语言?,laravel,migration,Laravel,Migration,我是新来的。在我的教程视频中,老师在迁移中使用外文,但是,我可以在没有外文的情况下创建我的关系,只使用belongTo,并且有很多。当我使用外文时,无法轻松删除一篇帖子(错误是您无法删除,因为外文家长有孩子……)。 我的问题是我的方式好还是不好?为什么 谢谢大家你的方法很好,但我认为外键更好。如果你没有外键,你会删除帖子,但是帖子的所有孩子(称为孤儿,因为他们不再有父母)都会留下来。为了避免外键错误,您需要先删除该帖子的所有子项,然后删除该帖子 好消息是外键也可以帮你做到这一点,所以你不必担心跟

我是新来的。在我的教程视频中,老师在迁移中使用外文,但是,我可以在没有外文的情况下创建我的关系,只使用belongTo,并且有很多。当我使用外文时,无法轻松删除一篇帖子(错误是您无法删除,因为外文家长有孩子……)。 我的问题是我的方式好还是不好?为什么


谢谢大家

你的方法很好,但我认为外键更好。如果你没有外键,你会删除帖子,但是帖子的所有孩子(称为孤儿,因为他们不再有父母)都会留下来。为了避免外键错误,您需要先删除该帖子的所有子项,然后删除该帖子

好消息是外键也可以帮你做到这一点,所以你不必担心跟踪所有的孩子。设置外键时,如果在删除帖子时添加
on delete cascade
子句,则数据库将自动为您删除帖子的所有子项,并且在不首先删除子项的情况下删除帖子将不再导致错误

如果您希望在删除帖子时保留子项,您可以使用delete set null上的
,它只需将子项的外键设置为null,而不是删除记录


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

你的方法很好,但我认为外键更好。如果你没有外键,你会删除帖子,但是帖子的所有孩子(称为孤儿,因为他们不再有父母)都会留下来。为了避免外键错误,您需要先删除该帖子的所有子项,然后删除该帖子

好消息是外键也可以帮你做到这一点,所以你不必担心跟踪所有的孩子。设置外键时,如果在删除帖子时添加
on delete cascade
子句,则数据库将自动为您删除帖子的所有子项,并且在不首先删除子项的情况下删除帖子将不再导致错误

如果您希望在删除帖子时保留子项,您可以使用delete set null上的
,它只需将子项的外键设置为null,而不是删除记录


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

答案实际上不是“这是Laravel的良好实践”而是“这是数据库管理的良好实践”

关于使用外键的好的一面和坏的一面,有很多关于这个主题的文章。下面是关于DBA堆栈交换的一个很好的解释


我个人的偏好是使用它们来维护数据的完整性。真正的力量来自于向关系中添加级联删除(如果适用于您的设计)

答案实际上不是“这是Laravel的良好实践”而是“这是数据库管理的良好实践”

关于使用外键的好的一面和坏的一面,有很多关于这个主题的文章。下面是关于DBA堆栈交换的一个很好的解释


我个人的偏好是使用它们来维护数据的完整性。真正的力量来自于向关系中添加级联删除(如果适用于您的设计)

这实际上取决于您希望数据库有多好。在数据库中使用外键的主要原因是

  • 防止破坏表之间链接的操作

  • 这将防止将无效数据插入外键列,因为它必须指向现有值

  • 另外,定义外键可以根据数据库加快查询速度。我不知道确切的毫秒数,但如果我找到了,我会发布它
从laravel的角度来看,你的方式是一种更好的方式,因为这是laravel的主要老师之一(Jeffrey way)在laravel入门系列中的教学方式

  • 外键是定义数据库中表之间关系的方法,而Laravel
    belongsTo()
    hasMany()
    是定义Laravel中表之间关系的方法

这实际上取决于您希望数据库有多好。在数据库中使用外键的主要原因是

  • 防止破坏表之间链接的操作

  • 这将防止将无效数据插入外键列,因为它必须指向现有值

  • 另外,定义外键可以根据数据库加快查询速度。我不知道确切的毫秒数,但如果我找到了,我会发布它
从laravel的角度来看,你的方式是一种更好的方式,因为这是laravel的主要老师之一(Jeffrey way)在laravel入门系列中的教学方式

  • 外键是定义数据库中表之间关系的方法,而Laravel
    belongsTo()
    hasMany()
    是定义Laravel中表之间关系的方法