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
Requires
- ext-pdo: *
- byjg/anydataset-db: ^5.0
Requires (Dev)
- php: >=8.1 <8.4
- phpunit/phpunit: ^9.6
- vimeo/psalm: ^5.9
README
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:
- Getting Started - Basic concepts and setup
- Database Setup - Configure your database connection
- Migration Scripts - Writing and organizing migrations
- CLI Usage - Command line interface guide
- API Reference - Complete API documentation
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