veejay/migration

Abstract migration engine for any database

Maintainers

Package info

github.com/Veejayspb/migration

pkg:composer/veejay/migration

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

0.1.0 2026-05-30 22:54 UTC

This package is auto-updated.

Last update: 2026-05-30 22:57:44 UTC


README

Abstract migration engine for any database.

License: MIT

Initialize

At first, you should create config file with command:

vendor/bin/migration init

Or you can create and edit migration.php file manually. Example config:

<?php

use Veejay\Migration\Repository\SqlRepository;

return [
    'path' => __DIR__ . '/migration',
    'repository' => new SqlRepository(
        'mysql:host=localhost;dbname=database',
        'root',
        'password',
        null,
        SqlRepository::MIGRATION_TABLE,
    ),
];

Create

Next command will create new migration file with name like m_000000_000000_my_1st_migration.

vendor/bin/migration create my_1st_migration

Then you should edit up() and down() methods according to your purposes.

<?php
declare(strict_types=1);

use Veejay\Migration\Unit\Migration;

final class m_000000_000000_my_1st_migration extends Migration
{
    public function up(): bool
    {
        $repository = $this->getRepository(); /* @var SqlRepository $repository */
        $sql = 'CREATE TABLE `test` (`id` INT AUTO_INCREMENT, `name` TEXT, PRIMARY KEY (`id`) USING BTREE)';
        return $repository->getDb()->execute($sql);
    }

    public function down(): bool
    {
        $repository = $this->getRepository(); /* @var SqlRepository $repository */
        $sql = 'DROP TABLE `test`';
        return $repository->getDb()->execute($sql);
    }
}

Run

Apply all migrations.

vendor/bin/migration migrate

Apply/revert to specific migration.

vendor/bin/migration migrate name_part

Print migration history.

vendor/bin/migration history

Custom database

You can write your own wrapper for any DB. Just implement Veejay\Migration\Repository\RepositoryInterface and use any storage you want.

Requirements

  • PHP 8.0+

Installation

composer require "veejay/migration"