有关 Laravel 中迁移的此类问题:
假设我有 1 个迁移(创建表) -已经完成,即输入了命令
php artisan migrate
,然后我进行其他更改(例如,更改另一个表的结构),然后我输入命令php artisan migrate
- 所有迁移将被处理,包括之前已经处理的第一个,或者 Laravel 在这种情况下使用版本控制(写在文档中)并且只处理最新的(新的)?在第一个问题的上下文中,最好为同一个表的每个操作/操作进行单独迁移,还是编辑相同的迁移,增加批处理计数?
- 方法
down()
。我是否理解正确,run()
例如,如果您在方法中创建了 2 个表,在第 3 列添加了列并在第 4 列更改了列的数据类型,那么在方法中down()
您必须手动执行相反的操作,返回方法之前的状态run()
?
这里有 2 个选项:
如果您正在此时此地从头开始开发并意识到该死的,但是这里缺少一些东西,您可以这样做,
php artisan migrate:refresh
即 转储并创建所有表你有一个团队或一个项目已经在进行中,你需要添加一些新的东西,然后你必须使用两个方法
up
和创建一个迁移down
,down
它将撤消添加到的所有内容up
这个问题在第一段中结束,这取决于你需要什么以及为什么需要它。
当然,最好在一次迁移中没有创建 3 个表,并且每个迁移都有自己的名称:例如
create_statuses_table
,add_field_status_to_orders_table
分别为 , ,如果您向其中添加up
了一些down
内容,则应该取消它。例如:
也可以创建一个命令
php artisan migrate --step
,以便为每个迁移指定其自己的编号,然后可以使用该命令取消一个迁移回来php atisan migrate:rollback
此外,在将更改部署到服务器之前,检查两个命令是否对您
up()
和正常工作也不错down()
,即 运行一次php artisan migrate --step
并php atisan migrate:rollback
确保一切顺利!