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)。请参阅许可证文件获取更多信息。