console-helpers/db-migration

简化数据库迁移

v0.1.1 2020-12-21 10:18 UTC

This package is auto-updated.

Last update: 2024-09-09 00:19:29 UTC


README

CI codecov Scrutinizer Code Quality

Latest Stable Version Total Downloads License

DB-Migration 是一个库,它使得在 SQLite 数据库上运行迁移变得简单。

开发库时的目标

  • 允许在不了解数据库连接详情的情况下初始化库
  • 允许在不了解数据库连接详情的情况下创建新的迁移文件
  • 允许并行使用多个数据库
  • 不依赖任何框架

用法

初始化

use ConsoleHelpers\DatabaseMigration\MigrationManager;
use ConsoleHelpers\DatabaseMigration\PhpMigrationRunner;
use ConsoleHelpers\DatabaseMigration\SqlMigrationRunner;
use Pimple\Container;

// 1. Create migration manager instance.
$migration_manager = new MigrationManager(
	'/path/to/migrations', // Directory containing migrations.
	new Container() // Anything implementing "ArrayAccess".
);

// 2. Register migration runners.
$migration_manager->registerMigrationRunner(new SqlMigrationRunner());
$migration_manager->registerMigrationRunner(new PhpMigrationRunner());

创建新的迁移

以下代码将在配置的迁移文件夹中创建 YYYYMMDD_HHMM_name.ext 迁移文件并返回其名称。

use ConsoleHelpers\DatabaseMigration\MigrationManager;

$migration_name = $migration_manager->createMigration(
	'example_migration', // any valid filename
	'sql' // 'php' or 'sql' (comes from migration runner)
);

结果如下

  • 将创建 /path/to/migrations/20160519_2155_example_migration.sql 文件
  • 20160519_2155_example_migration.sql 将返回给 $migration_name 变量

迁移模板

SQL

空文件。

PHP

<?php
use ConsoleHelpers\DatabaseMigration\MigrationContext;

return function (MigrationContext $context) {
	// Write PHP code here.
};

运行迁移

use Aura\Sql\ExtendedPdo;
use ConsoleHelpers\DatabaseMigration\MigrationManager;
use ConsoleHelpers\DatabaseMigration\MigrationContext;
use Pimple\Container;

// 1. Create database connection.
$database = new ExtendedPdo('sqlite:/path/to/database.sqlite');

// 2. Run migrations.
$migration_manager->runMigrations(
	// Context consists of the database and container.
	new MigrationContext($database)
);

安装

执行此命令以添加依赖项

php composer.phar require console-helpers/db-migration:^0.1

需求

贡献

查看 CONTRIBUTING 文件。

许可证

DB-Migration 在 BSD-3-Clause 许可证下发布。有关详细信息,请参阅捆绑的 LICENSE 文件。