本文由极客人原创翻译自:http://phinx.readthedocs.org,不周之处,敬请指正;系列文章请访问王柏元的博客Phinx标签页或者用极客搜搜索:Phinx 获取所有文章目录
为转换数据库:对数据进行还原或修改,Phinx 是通过一系列的Migrations文件来实现的。每个Migrations文件其实是一个PHP类,构陷一个migration的方法最好是通过Phinx 提供的API,当然,运行原生的SQL语句也是可以的。
新建Phinx Migration
创建一个新的Phinx Migration迁移。我们要在项目文件夹下运行Phinx的 create命令:
1 |
$php vendor/bin/phinx create MyNewMigration |
运行上述命令完毕后,在migrations文件夹(这个文件夹就是你安装phinx时的那个migrations文件夹) 会生成一个文件名为YYYYMMDDHHMMSS_my_new_migration.php的PHP文件,在前14个字符其实当前时间的时间戳。Phinx自动创建一个框架迁移文件有两个空的和一个被注释掉的方法:
1 |
<?phpuse Phinx\Migration\AbstractMigration;class ComNode extends AbstractMigration{ /** * Change Method. * * More information on this method is available here: * http://docs.phinx.org/en/latest/migrations.html#the-change-method * * Uncomment this method if you would like to use it. * public function change() { } */ /** * Migrate Up. */ public function up() { $this->execute(""); } /** * Migrate Down. */ public function down() { }} |
AbstractMigration类
所有Phinx Migration迁移类都继承于 AbstractMigration类,它提供了必要的支持来创建数据库迁移。数据库迁移可以创建新表,插入行,添加索引和修改列。
up()方法
当你对数据库进行向上迁移(即对数据库进行新的修改时),并且phinx检测到构建的migrations 之前没有被运行时,up()方法会被phinx自动运行。在up()方法中你需要根据你的意图自己写代码来修改数据库。
Down()方法
当你对数据库进行向下迁移(即对数据库的操作进行还原修改),phinx检测到构建的migrations 之前没有被运行时,Down()的方法会被Phinx自动运行。你应该使用down()方法来扭转/撤销数据库的修改。
Change()的方法
Phinx 0.2.0引入了一个新功能,叫做可逆迁移。你只需要定义可逆迁移的 up()方法的逻辑那么Phinx就可以为你自动找出如何向下迁移。定义一个可逆迁移必须取消 change方法的注释、补全里面的方法定义。例如:
1 |
<?phpuse Phinx\Migration\AbstractMigration;class CreateUserLoginsTable extends AbstractMigration{ /** * Change Method. * * More information on this method is available here: * http://docs.phinx.org/en/latest/migrations.html#the-change-method * * Uncomment this method if you would like to use it. */ public function change() { // create the table $table = $this->table('user_logins'); $table->addColumn('user_id', 'integer') ->addColumn('created', 'datetime') ->create(); } /** * Migrate Up. */ public function up() { } /** * Migrate Down. */ public function down() { }} |
当执行这个迁移时,Phinx将创建 user_logins表,同时自动实现如何删除表。需要注意的是,当迁移文件中存在change方法时,Phinx会自动忽略了 up()和 down()方法。如果您还需要使用这些方法,建议您创建一个单独的migration文件。
注意:
在创建或更新表内 change()方法必须使用桌子上 create()和 update()方法。Phinx不能自动确定 save()调用创建一个新表或修改一个现有的一个。Phinx的可逆迁移只能反向实现以下的操作:
- 新建表
- 重命名表
- 添加列属性
- 重命名列属性
- 添加索引
- 添加外键
如果一个操作不能逆转,在向下迁移的时候,Phinx就会抛出 IrreversibleMigrationException异常。

关注我的微信,获取文章更新
如果你觉得这篇文章对你有用,可以点击下面的“赞助作者”打赏作者!
转载注明原文出处:王柏元的博客>>https://wangbaiyuan.cn/migration-build-up-down-change-method-phinx-tutorial-2.html
暂无评论