Skip to content

zheltikov/php-simple-migrator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

php-simple-migrator

A simple database migration tool.

Usage

First, install this package via Composer:

$ composer require zheltikov/simple-migrator

Then, define a configuration file in your project, for example migration_config.php:

<?php

use Zheltikov\SimpleMigrator\{Config, Dialect, Migration, MigrationSet};

return new Config(
    // Supply here a closure returning a PDO connection to the database
    PDO: fn() => new PDO('pgsql:host=localhost;port=5432;dbname=postgres;user=postgres;password=secret'),
    
    // Define your migrations here...
    migrationSet: new MigrationSet([
        new Migration(
            id: '1',
            up: 'CREATE TABLE people (id INTEGER);',
            down: 'DROP TABLE people;',
        ),
        new Migration(
            id: '2',
            up: 'ALTER TABLE people ADD COLUMN name VARCHAR;',
            down: 'ALTER TABLE people DROP COLUMN name;',
        ),
        // ...
    ]),
    
    // Optionally, change the name of the migration log table.
    // By default, it is 'migrations'.
    tableName: 'my_migrations',
    
    // You can also choose an SQL dialect here.
    // By default, it is Dialect::POSTGRESQL
    dialect: Dialect::SQLITE,
);

Then, you can apply these migrations by running:

$ vendor/bin/simple-migrator latest migration_config.php

Alternatively, check out the other commands to apply the migrations one-by-one:

$ vendor/bin/simple-migrator 

Usage: vendor/bin/simple-migrator COMMAND CONFIG_FILE

COMMAND is one of the following actions:
    up             Apply the next migration
    down           Revert to the previous migration
    latest         Apply all migrations up to the latest one
    current        Print the ID of the migration currently applied to the database

CONFIG_FILE points to the migration config file.

Features

  • PostgreSQL support (via PDO)
  • MySQL support
  • SQLite support

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages