Laravel框架-迁移文件
它是什么:
- 它是保存在迁移文件目录
database\migrations\
中的文件,并且这些文件中的类都继承迁移类Illuminate\Database\Migrations\Migration
主要作用:
- 可以让开发者在代码中实现对数据表结构的增删改能力
- 开发者按照规范来,就可以对数据库结构起到版本控制的作用
运作原理:
- 首先知道每个迁移文件都会有两个方法,分别是负责破坏的
up
与负责还原的down
。如up
中添加某表,那么down
中必定是删除某表 - 当我们执行迁移命令
php artisan migrate
时,程序会对比迁移表migration
的记录与迁移目录中存在的文件来找到未迁移的迁移文件,接着运行迁移文件的up
方法,并在迁移表migration
中添迁移记录,内容为迁移文件名与迁移批次号 - 当我们执行迁移回退命令
php artisan migrate:rollback
时,程序会在迁移表migration
中找到迁移批次号最大的记录(可能是多条),接着根据记录来找到对应的迁移文件并执行其中的down
方法来执行回退操作,然后删除迁移表migration
中的相关记录
如何使用?
- 创建新表的迁移命令
php artisan make:migration create_xx_table
。其中的 xx 表示表名 - 添加字段的命令
php artisan make:migration add_yy_to_xx_table
。其中的 xx 表示表名,yy表示字段名 - 添加索引的命令
php artisan make:migration add_yy_index_to_xx_table
。表示给 yy 字段添加 index索引。其中,up 方法的内容为$table->index('yy');
,down方法内容为$table->dropIndex('xx_yy_index');
。嗐,谁又知道我在这里卡了多久呢 - 迁移方法的内容命令太多,必须要看文档
使用建议:
- 高效检查迁移文件:可以先执行迁移命令
php artisan migrate
并查看数据库,接着执行迁移回退命令php artisan migrate:rollback
查看回退结果,最后再执行迁移命令php artisan migrate
获得需要修改的内容 - 快速迭代开发:开发阶段,如果发现迁移文件的内容要改变,为了图方便,代码可以更加整洁,我们可以直接在迁移文件上修改,然后删除迁移文件对应的数据表以及在迁移表
migration
中对应的迁移记录,然后再跑一次迁移命令即可。这种操作解决不能再生产环境中进行 - 解决迁移失败:当执行迁移命令
php artisan migrate
时,有时会碰到迁移失败的情况。发生这种情况,往往是回退了漏写了down
方法内容的迁移文件所致。此时,搞清楚导致失败的迁移文件的执行目的,问题就能迎刃而解了。如那迁移文件是创建数据表的,那就去数据库删除对应的表,接着去迁移表migration
中删除迁移记录,然后在执行一遍迁移命令php artisan migrate
即可