allenjb/migrationmanager

一个简单、无框架依赖、不可逆的MySQL迁移库,接受预先配置的PDO连接

2.0.4 2018-08-01 08:22 UTC

This package is auto-updated.

Last update: 2024-09-07 21:18:13 UTC


README

Latest Version on Packagist Software License

一个简单、无框架依赖、不可逆的MySQL迁移库,接受预先配置的PDO连接(允许您预先设置所需的连接配置,如sql_mode或时区,以及您自己的错误处理)。

为什么?我看了其他迁移库,但它们都有大量关于MySQL语言支持和回滚的问题,或者控制MySQL连接(例如,时区,sql_mode)是问题,因为它们控制着连接的创建。虽然我可以尝试强制不使用这些有问题的功能,但如果它们一开始就不存在,那就容易多了。

版本

使用版本1以兼容PHP 5.6。2+版本需要PHP 7.1+

安装

通过Composer

$ composer require allenjb/migrationmanager

用法

$pdo = new \PDO(...);
$pathToMigrations = "../db/migrations/";
$migrationsTable = 'migrations';
$manager = new AllenJB\MigrationManager($pdo, $pathToMigrations, $migrationsTable);

// List migrations
print_r ($manager->executedMigrations());
print_r ($manager->migrationsToExecute());
print_r ($manager->futureMigrations());

// Perform pending migrations
$manager->executeMigrations();

// You MUST call when you've finished using the manager to release all locks
$manager->unlock();

迁移文件

文件名必须符合YYYYMMDD_HHmm_ClassName.php的格式

时间以24小时制表示。

类名必须唯一。

如果日期大于今天(不考虑时间),则迁移将在该日期之前不执行。这允许您安排将来的迁移(例如,您正在删除字段,但希望将其保留在数据库中一段时间以防止数据丢失/代码回滚)。

<?php
declare(strict_types = 1);
// example filename: 20170330_1100_Initialize.php

use AllenJB\MigrationManager\AbstractMigration;

class Initialize extends AbstractMigration
{

    public function up() : void
    {
        // Execute your changes here, using $this->db to access the PDO connection
    }
}

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。