补充:迁移文件的执行顺序

迁移文件默认是按照创建先后的顺序来执行(文件名开始部分的时间戳作为排序依据)。教程中没有提及这一点,文档中有提到。
当时看到教程中 并且区分执行先后顺序,这确保了初始化数据发生在数据表结构创建完成后。 这句话时很困惑——如何『确保』的?执行顺序又是如何确定的?是按照创建的先后顺序还是可以指定顺序?如果可以指定顺序,那是在 migrate 命令中指定还是需要创建一个设置文件来指定?虽然直觉觉得执行顺序应该是创建顺序,不过还是查了下文档,发现默认顺序确实如此。另外,通过命令指定顺序也是可行的,migrate 命令提供了一个 --path 选项,可以每次指定一个文件来执行。
所以,如果在创建数据表结构之前先创建了初始化数据的迁移文件,那要么删掉后者再次创建,要么指定顺序执行。
另一方面,『创建初始化数据迁移文件应该在创建数据表结构迁移文件之后』也算是一个『约定』吧。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1

补充:当时其实还想到了一种可能:Laravel 会根据迁移文件的文件名或类名自动生成依赖吗?比如初始化数据的迁移文件中出现了对应的数据表的名字,Laravel 会自动识别这个名字然后会等到此表相关的所有迁移执行完成后再执行初始化数据的迁移吗?
似乎是没有这种机制。但 Laravel 默默运行的机制(约定)对新手来说实在有点多,以至于不知不觉的就往这方面想了。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!