在thinkphp5中提供了数据迁移工具(think-migration),它是机遇phinx开发(文档地址:http://docs.phinx.org/en/latest/)
首先通过 composer 安装
composer require topthink/think-migration
注意事项,不支持修改文件配置目录
在命令行下运行查看帮助,可以看到新增的命令
php think
migrate
migrate:create Create a new migration
migrate:rollback Rollback the last or to a specific migration
migrate:run Migrate the database
migrate:status Show migration status
optimize
optimize:autoload Optimizes PSR0 and PSR4 packages to be loaded wit
h classmaps too, good for production.
optimize:config Build config and common file cache.
optimize:route Build route cache.
optimize:schema Build database schema cache.
seed
seed:create Create a new database seeder
seed:run Run database seeders
创建迁移类,首字母必须为大写
php think migrate:create Users
可以看到目录下有新文件 .\database\migrations\20161117144043_users.php
一:配置think-migration
在commond.php 中添加
<?php return [ "think\\migration\\command\\migrate\\Create", "think\\migration\\command\\migrate\\Run", "think\\migration\\command\\migrate\\Rollback", "think\\migration\\command\\migrate\\Status", "think\\migration\\command\\seed\\Create", "think\\migration\\command\\seed\\Run", ]; ?>
注意由于think-migration存放在thinkphp/vendor中 所以在think中需要将vendor加入auoload
require __DIR__.'/../thinkphp/vendor/autoload.php';
二:命令行运行
在命令行输入php think 可以看见
migrate:数据库迁移工具 seed:数据库填充工具
主要讨论migrate:
migrate:create : 创建一个新的数据迁移类,php think migrate:create <file>,文件名须采用驼峰命名法
forexample:php think migrate:create ScProductImage 文件会在制定目录下生成一个php文件
***********************************************************
migrate:run : 完成数据迁移工作 php think migrate:run
***********************************************************
migrate:status:查看migrate工作状态 php think migrate:status
***********************************************************************************************
migrate:rollback : 回滚数据到指定的一个数据迁移版本 php think migrate:rollback -t <timeline>
<timeline> 就是我们上图上面红框表示的值
三:migrate文件编写
在migrate中有三个方法
up:在migrate:run时执行(前提是文件中不存在change方法)
down:在migrate:rollback时执行(前提是文件中不存在change方法)
change:migrate:run 和migrate:rollback时执行 (如果存在该方法 则不会去执行up 与down)