console-helpers / db-migration
简化数据库迁移
v0.1.1
2020-12-21 10:18 UTC
Requires
- php: >=5.3.7
- aura/sql: ^2.5 | ^3.0
Requires (Dev)
- aik099/coding-standard: dev-master
This package is auto-updated.
Last update: 2024-09-09 00:19:29 UTC
README
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 文件。