https://github.com/vgarvardt/ZfSimpleMigrations
Simple Migrations for Zend Framework 2
https://github.com/vgarvardt/ZfSimpleMigrations
Last synced: 6 months ago
JSON representation
Simple Migrations for Zend Framework 2
- Host: GitHub
- URL: https://github.com/vgarvardt/ZfSimpleMigrations
- Owner: vgarvardt
- Archived: true
- Created: 2013-04-03T10:20:51.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2022-02-03T09:44:40.000Z (about 3 years ago)
- Last Synced: 2024-04-23T22:19:52.194Z (about 1 year ago)
- Language: PHP
- Size: 173 KB
- Stars: 29
- Watchers: 9
- Forks: 24
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-zf - ZfSimpleMigrations - Simple Migrations for Zend Framework 2. (Uncategorized / Uncategorized)
README
# ZfSimpleMigrations
Simple Migrations for Zend Framework 2. Project originally based
on [ZendDbMigrations](https://github.com/vadim-knyzev/ZendDbMigrations) but module author did not response for issues
and pull-requests so fork became independent project.## Supported Drivers
The following DB adapter drivers are supported by this module.
* Pdo_Sqlite
* Pdo_Mysql
* Pdo_Pgsql
* Mysqli _only if you configure the driver options with `'buffer_results' => true`_## Installation
### Using composer
```bash
php composer.phar require vgarvardt/zf-simple-migrations:dev-master
php composer.phar update
```add `ZfSimpleMigrations` to the `modules` array in application.config.php
## Usage
### Available commands
* `migration version []` - show last applied migration (`name` specifies a configured migration)
* `migration list [] [--all]` - list available migrations (`all` includes applied migrations)
* `migration apply [] [] [--force] [--down] [--fake]` - apply or rollback migration
* `migration generate []` - generate migration skeleton classMigration classes are stored in `/path/to/project/migrations/` dir by default.
Generic migration class has name `Version` and implement `ZfSimpleMigrations\Library\MigrationInterface`.
### Migration class example
```php
addSql(/*Sql instruction*/);
}public function down(MetadataInterface $schema)
{
//$this->addSql(/*Sql instruction*/);
}
}
```#### Multi-statement sql
While this module supports execution of multiple SQL statements it does not have way to detect if any other statement
than the first contained an error. It is *highly* recommended you only provide single SQL statements to `addSql` at a
time. I.e instead of```php
$this->addSql('SELECT NOW(); SELECT NOW(); SELECT NOW();');
```You should use
```php
$this->addSql('SELECT NOW();');
$this->addSql('SELECT NOW();');
$this->addSql('SELECT NOW();');
```### Accessing ServiceLocator In Migration Class
By implementing the `Zend\ServiceManager\ServiceLocatorAwareInterface` in your migration class you get access to the
ServiceLocator used in the application.```php
getServiceLocator()->get(/*Get service by alias*/);
//$this->addSql(/*Sql instruction*/);}
public function down(MetadataInterface $schema)
{
//$this->getServiceLocator()->get(/*Get service by alias*/);
//$this->addSql(/*Sql instruction*/);
}
}
```### Accessing Zend Db Adapter In Migration Class
By implementing the `Zend\Db\Adapter\AdapterAwareInterface` in your migration class you get access to the Db Adapter
configured for the migration.```php
addColumn(new Integer('id', false));
$table->addConstraint(new PrimaryKey('id'));
$table->addColumn(new Varchar('my_column', 64));
$this->addSql($table->getSqlString($this->adapter->getPlatform()));
}public function down(MetadataInterface $schema)
{
$drop = new DropTable('my_table');
$this->addSql($drop->getSqlString($this->adapter->getPlatform()));
}
}
```## Configuration
### User Configuration
The top-level key used to configure this module is `migrations`.
#### Migration Configurations: Migrations Name
Each key under `migrations` is a migrations configuration, and the value is an array with one or more of the following
keys.##### Sub-key: `dir`
The path to the directory where migration files are stored. Defaults to `./migrations` in the project root dir.
##### Sub-key: `namespace`
The class namespace that migration classes will be generated with. Defaults to `ZfSimpleMigrations\Migrations`.
##### Sub-key: `show_log` (optional)
Flag to log output of the migration. Defaults to `true`.
##### Sub-key: `adapter` (optional)
The service alias that will be used to fetch a `Zend\Db\Adapter\Adapter` from the service manager.
#### User configuration example
```php
'migrations' => array(
'default' => array(
'dir' => dirname(__FILE__) . '/../../../../migrations-app',
'namespace' => 'App\Migrations',
),
'albums' => array(
'dir' => dirname(__FILE__) . '/../../../../migrations-albums',
'namespace' => 'Albums\Migrations',
'adapter' => 'AlbumDb'
),
),
```