vakata/migrations

PHP数据库迁移

1.1.1 2024-02-19 16:18 UTC

This package is auto-updated.

Last update: 2024-09-19 17:31:23 UTC


README

Latest Version on Packagist Software License

PHP数据库迁移。

安装

通过Composer

$ composer require vakata/migrations

使用方法

为所有迁移准备一个目录。一个迁移包含一个文件夹,里面包含3个文件

  • schema.sql - 需要的数据库模式修改
  • data.sql - 可选的插入/更新/删除数据
  • uninstall.sql - 可选的完全撤销此迁移的语句

示例结构

 |-migrations
   |- base
   |  |- _core
   |     |- 000
   |        |- schema.sql
   |        |- data.sql
   |        |- uninstall.sql
   |- app
      |- feature1
      |  |- 000
      |  |  |- schema.sql
      |  |  |- data.sql
      |  |  |- uninstall.sql
      |  |- 001
      |     |- schema.sql
      |- feature2
         |- 000
            |- schema.sql
            |- uninstall.sql

创建必要的表,例如

-- postgre
CREATE TABLE IF NOT EXISTS migrations (
  migration SERIAL NOT NULL,
  package varchar(255) NOT NULL,
  installed timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
  removed timestamp DEFAULT NULL ,
  PRIMARY KEY (migration)
);
-- mysql
CREATE TABLE IF NOT EXISTS migrations (
  migration bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  package varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  installed datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  removed datetime DEFAULT NULL,
  PRIMARY KEY (migration)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ;
$migrations = new \vakata\migrations\Migrations(
    new \vakata\database\DB('<connection-string-here>'),
    'path/to/migrations/folder',
    [ 'base/', 'app/feature2', 'app' ] // optional feature flags (also used for sorting)
    null // optional sort callback
);
// this will install the packages in this order:
// base/_core/000, app/feature2/000, app/feature1/000, app/feature1/000
$migrations->up();

贡献

有关详细信息,请参阅CONTRIBUTING

安全

如果您发现任何与安全相关的问题,请发送电子邮件至github@vakata.com,而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件