gpt4 book ai didi

mysql - 在 Laravel 的单独迁移中(或在任何迁移工作流程中)添加外键是否是更好的做法?

转载 作者:行者123 更新时间:2023-11-29 12:21:24 24 4
gpt4 key购买 nike

我在尝试在 Laravel 中进行迁移时遇到了一些问题。我拥有的表越多,尝试重做迁移的次数就越多,并且当之前使用基于尚未创建的表的外键运行一次迁移时,我会遇到几个外键约束错误。

简单地在各自的迁移中创建所有表,然后进行特定的外键迁移是否可能会出现问题?有没有办法指定它始终最后运行?每个带有外键的表是否应该有自己的迁移,或者将所有外键包含在一个迁移中会更干净吗?

我希望这不会显得太主观。到目前为止,我在 Laravel 中构建模型层方面所看到的一切似乎都非常有条理,具有特定的做事方式。我不确定我是否还没有找到此过程的工作流程文档。

最佳答案

Laravel 的迁移名称包含时间戳。例如默认用户迁移:

2014_10_12_000000_create_users_table.php
^^^^^^^^^^^^^^^^^

除了创建唯一的文件名(即使您有两次create_users_table)之外,此时间戳还用于将迁移按顺序排序。准确地说,是开发人员创建它们的顺序。

这样做的结果是迁移始终按照您添加迁移的顺序运行

这通常应该有助于解决外键问题。如果您通过迁移来构建表迁移,那么直接添加外键应该没问题。

但是,如果您要将现有数据库(架构)转换为 Laravel 迁移,您必须:

  1. 请密切注意创建表的顺序,以便新表所依赖的所有表都已存在。
  2. 只需按照您的建议添加外键即可

我认为单独添加外键的想法不是一个坏主意。但是,我不会在新的迁移中坚持使用它。这意味着,如果您决定需要一个新表,该表对另一个现有表具有外键约束,只需直接添加约束即可。那么就不需要额外的迁移。

关于mysql - 在 Laravel 的单独迁移中(或在任何迁移工作流程中)添加外键是否是更好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28951207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com