Doctrine/Migrations (opens new window) for Nette Framework.

# Content

# Setup

Install package

composer require nettrine/migrations 
1

Configure extension

extensions: nettrine.migrations: Nettrine\Migrations\DI\MigrationsExtension 
1
2

# Relying

Take advantage of enpowering this package with 2 extra packages:

  • doctrine/orm
  • symfony/console

# doctrine/orm

This package relies on doctrine/orm, use prepared contributte/doctrine-orm (opens new window) integration. Doctrine ORM depends on Doctrine DBAL, use prepared contributte/doctrine-dbal (opens new window) integration

composer require nettrine/dbal composer require nettrine/orm 
1
2

Without these packages the migrations can't be processed, because they need a database connection and entities information. Don't forget to configure Doctrine DBAL & ORM properly with console bridge (opens new window). Some commands need special treatment.

# symfony/console

This package relies on symfony/console, use prepared contributte/console (opens new window) integration.

composer require contributte/console 
1
extensions: console: Contributte\Console\DI\ConsoleExtension(%consoleMode%) 
1
2

# Configuration

Schema definition

nettrine.migrations: table: <string> column: <string> directory: <path> namespace: <string> versionsOrganization: <null|year|year_and_month> customTemplate: <null|path> 
1
2
3
4
5
6
7

Under the hood

Minimal configuration:

nettrine.migrations: directory: %appDir%/migrations 
1
2

# Usage

Type bin/console in your terminal and there should be a migrations command group.

  • migrations:diff
  • migrations:execute
  • migrations:generate
  • migrations:latest
  • migrations:migrate
  • migrations:status
  • migrations:up-to-date
  • migrations:version

Console Commands

You are mostly going to need migrations:diff and migrations:migrate.

# Migration

This is an example of a migration class.

You can count on Nette Dependency Injection (opens new window). Injecting into properties or via inject<> method is also supported.

<?php declare(strict_types = 1); namespace App\Migrations; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; final class Version20200000000001 extends AbstractMigration { /** * @var MyCrypto * @inject */ public $crypto; public function up(Schema $schema): void { $this->addSql('CREATE TABLE happy (id INT NOT NULL, coding INT NOT NULL, PRIMARY KEY(id))'); } } 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 3rd party

kdyby/doctrine

decorator: Symfony\Component\Console\Command\Command: tags: [kdyby.console.command] Symfony\Component\Console\Helper\Helper: tags: [kdyby.console.helper] 
1
2
3
4
5

# Examples