byjg/migration

A simple, framework-agnostic database migration tool that uses pure SQL commands for versioning your database.

Fund package maintenance!
byjg

Installs: 77 924

Dependents: 9

Suggesters: 0

Security: 0

Stars: 164

Watchers: 6

Forks: 28

Open Issues: 13

pkg:composer/byjg/migration

5.0.2 2025-01-07 13:14 UTC

README

Sponsor Build Status Opensource ByJG GitHub source GitHub license GitHub release

A simple, framework-agnostic database migration tool that uses pure SQL commands for versioning your database.

Key Features

  • Pure SQL Migrations - Use native SQL commands instead of framework-specific code
  • Multiple Database Support - Works with MySQL, PostgreSQL, SQLite, and SQL Server
  • Framework Independent - Can be used with any PHP framework or standalone
  • CLI & Library Support - Use as a command-line tool or integrate into your PHP application
  • Transaction Support - Ensures database consistency (where supported)
  • Multi-Developer Friendly - Supports parallel development with -dev suffixed versions

Quick Start

Installation

composer require "byjg/migration"

CLI Usage

The package includes a built-in CLI tool:

# Show current database version
vendor/bin/migrate version --connection mysql://user:pass@localhost/database

# Update database to latest version
vendor/bin/migrate update --connection mysql://user:pass@localhost/database --path ./migrations

# Reset database and run all migrations
vendor/bin/migrate reset -c mysql://user:pass@localhost/database -p ./migrations

See CLI Usage for complete documentation.

Library Usage

<?php
$connectionUri = new \ByJG\Util\Uri('mysql://user:pass@localhost/database');
\ByJG\DbMigration\Migration::registerDatabase(\ByJG\DbMigration\Database\MySqlDatabase::class);

$migration = new \ByJG\DbMigration\Migration($connectionUri, '.');
$migration->update();

Documentation

For detailed documentation, please visit:

Supported Databases

  • MySQL/MariaDB
  • PostgreSQL
  • SQLite
  • SQL Server (Windows and Linux)

For connection strings and specific database setup, see our database documentation.

Related Projects

Dependencies

flowchart TD
    byjg/migration --> byjg/anydataset-db
    byjg/migration --> ext-pdo
Loading

Open source ByJG