【Finch】数据库迁移插件

2.0.0 版本
2024-11-12 版本更新时间
21 安装
2 star

webman-micro/migrations

包装 robmorgan/phinx 组件支持webman命令行

截图

说明

Phinx 可以让开发者简洁的修改和维护数据库。 它避免了人为的手写 SQL 语句,它使用强大的 PHP API 去管理数据库迁移。开发者可以使用版本控制管理他们的数据库迁移。 Phinx 可以方便的进行不同数据库之间数据迁移。还可以追踪到哪些迁移脚本被执行,开发者可以不再担心数据库的状态从而更加关注如何编写出更好的系统。

项目地址

https://github.com/webman-micro/migrations

安装

通过composer安装

composer require webman-micro/migrations

官方中文文档地址

详细使用可以去看官方中文文档,这里只讲怎么在webman中配置使用

https://tsy12321.gitbooks.io/phinx-doc/content/

配置说明

|-- config                       # webman 配置文件
    |-- plugin
        |-- webman-micro
            |-- migrations
                |-- app.php          # 主配置信息
                |-- command.php      # 自定命令    

主配置信息

<?php
return [
    'enable' => true,
    "paths" => [
        "migrations" => "database/migrations", // 迁移文件存储路径
        "seeds" => "database/seeders" // 迁移数据文件存在路径
    ],
    "environments" => [
        "default_migration_table" => "phinxlog", // 迁移记录表
        "default_environment" => "product", // 默认使用的环境配置
        "product" => [
            "adapter" => "mysql", // 使用mysql 配置
            "host" => getenv("DB_HOST", '127.0.0.1'),
            "name" => getenv("DB_NAME", ''),
            "user" => getenv("DB_USER", ''),
            "pass" => getenv("DB_PASSWORD", ''),
            "port" => getenv("DB_PORT", '3306'),
            "charset" => "utf8"
        ]
    ]
];

迁移文件目录结构

.
├── app                           应用目录
│   ├── controller                控制器目录
│   │   └── Index.php             控制器
│   ├── model                     模型目录
......
├── database                      数据库文件
│   ├── migrations                迁移文件
│   │   └── 20180426073606_create_user_table.php
│   ├── seeders                   迁移数据
│   │   └── UserSeeder.php
......

命令行说明

migrations 迁移文件命令

命令 说明
php webman migrations:breakpoint 设置断点
php webman migrations:create 创建迁移脚本文件
php webman migrations:list_aliases 列出模板类别名
php webman migrations:migrate 运行执行所有脚本
php webman migrations:rollback 回滚之前的迁移脚本,与 Migrate 命令相反
php webman migrations:status 打印所有迁移脚本和他们的状态
php webman migrations:test 验证配置文件

Breakpoint 命令

Breakpoint 命令用来设置断点,可以使你对回滚进行限制。你可以调用 breakpoint 命令不带任何参数,即将断点设在最新的迁移脚本上

$ php webman migrations:breakpoint -e development

可以使用 --target 或者 -t 来指定断点打到哪个迁移版本上

$ php webman migrations:breakpoint -e development -t 20120103083322

可以使用 --remove-all 或者-r 来移除所有断点

$ php webman migrations:breakpoint -e development -r

当你运行 status 命令时可以看到断点信息

Create 命令

create 命令用来创建迁移脚本文件。需要一个参数:脚本名。迁移脚本命名应该保持 驼峰命名法

$ php webman migrations:create MyNewMigration

打开新创建的迁移脚本并编写数据库修改。Phinx 把迁移脚本创建到 phinx.yml 里面指定的路径。更多信息参考 配置

你可以重写模板文件,并在创建的时候指定模板

$ php webman migrations:create MyNewMigration --template="<file>"

可以提供一个模板类,这个类必须继承接口 Phinx\Migration\CreationInterface

$ php webman migrations:create MyNewMigration --class="<class>"

提供的模板中,类中也可以定义回调,这个回调将在迁移脚本生成的时候被调用

注意:你不能同时使用 --template--class

Migrate 命令

Migrate 命令默认运行执行所有脚本,可选指定环境

$ php webman migrations:migrate -e development

可以使用 --target 或者 -t 来指定执行某个迁移脚本

$ php webman migrations:migrate -e development -t 20110103081132

Rollback 命令

Rollback 命令用来回滚之前的迁移脚本。与 Migrate 命令相反。

你可以使用 rollback 命令回滚上一个迁移脚本。不带任何参数

$ php webman migrations:rollback -e development

使用 --target 或者 -t 回滚指定版本迁移脚本

$ php webman migrations:rollback -e development -t 20120103083322

指定版本如果设置为0则回滚所有脚本

$ php webman migrations:rollback -e development -t 0

可以使用 --date 或者 -d 参数回滚指定日期的脚本

$ php webman migrations:rollback -e development -d 2012
$ php webman migrations:rollback -e development -d 201201
$ php webman migrations:rollback -e development -d 20120103
$ php webman migrations:rollback -e development -d 2012010312
$ php webman migrations:rollback -e development -d 201201031205
$ php webman migrations:rollback -e development -d 20120103120530

如果断点阻塞了回滚,你可以使用 --force 或者-f参数强制回滚

$ php webman migrations:rollback -e development -t 0 -f

Status 命令

Status 命令可以打印所有迁移脚本和他们的状态。你可以用这个命令来看哪些脚本被运行过了

$ php webman migrations:status -e development

当所有脚本都已经执行(up)该命令将退出并返回 0

  • 1:至少有一个回滚过的脚本(down)
  • 2:至少有一个未执行的脚本

Seed 数据填充文件命令

命令 说明
php webman seed:create 创建 seed 类
php webman seed:run 执行所有 seed

Seed Create 命令

Seed Create 命令可以被用来创建 seed 类。需要一个类名参数。命名格式使用驼峰法。

$ php webman seed:create MyNewSeeder

Seed Run 命令

默认Seed run 命令会执行所有 seed。

$ php webman seed:run -e development

如果你想要指定执行一个,只要增加 -s 参数并接 seed 的名字

$ php webman seed:run -e development -s MyNewSeeder
赞助商