任何一位 Laravel 的开发者都肯定对于 migrate:refresh
这个命令很熟悉了,特别是首次发布上线前,随着开发进行,对 migration 文件不断做修改,就会一次又一次地运行这个命令来重建数据库。
而在 Laravel 5.5 版本中,对这个命令又进行了一次增强。或者说增加了一个相似但又有所区别的命令:migrate:fresh
.
refresh
和 fresh
命令的区别在于:fresh
命令不按照 migrations
表里的记录逐步回滚,而是通过删除数据库里所有表来跳过还原和回滚的步骤,然后在空数据库上执行每个 migration 文件里的 up
方法。
通过两个命令的输出可以清楚地看到区别:
$ php artisan migrate:refresh
Rolling back: 2014_10_12_100000_create_password_resets_table
Rolled back: 2014_10_12_100000_create_password_resets_table
Rolling back: 2014_10_12_000000_create_users_table
Rolled back: 2014_10_12_000000_create_users_table
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table
上面是 refresh
的输出,可以看到前面先进行了两次 rollback 操作,然后再执行了两次 migrate 操作。
接下来再看看 fresh
命令的输出:
$ php artisan migrate:fresh
Dropped all tables successfully.
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table
注意输出的第一行,直接进行了 drop all tables
的操作。
关于这个命令的更多信息,你也可以查看 Taylor 写的这篇文章
作者:小李刀刀
原文链接:Laravel Migrate 中的 Fresh 和 Refresh 命令
裁纸刀下版权所有,允许非商业用途转载,转载时请原样转载并标明来源、作者,保留原文链接。