symfony3 Doctrine -- Миграции

Установим пакет

Выполняем команду :

composer require doctrine/doctrine-migrations-bundle "^1.0"

и подключаем пакет в AppKernel.php :

// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        //...
        new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
    );
}

а также добавляем настройки в config.yml :

# app/config/config.yml
doctrine_migrations:
    dir_name: "%kernel.root_dir%/DoctrineMigrations"
    namespace: Application\Migrations
    table_name: migration_versions
    name: Application Migrations
    organize_migrations: false # Version >=1.2 Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false

Подготовка окончена, можем приступать к работе.

Команды миграций

Переходим в терминале в папку с нашим проектом и вводим команду

php bin/console doctrine:migrations *а далее один из вариантов ниже

  • :diff -- создаёт миграцию для сравнения Вашей схемы со схемой в базе данных. При выполнении данной миграции оба варианта будут приведены
  • :execute -- применяет конкретную миграцию, нужно указать её номер:
    php bin/console doctrine:migrations:execute 20170925141401
  • :generate -- генерирует шаблон для создания новой миграции
  • :migrate -- накатывает все возможные миграции
  • :status -- выводит статус всех миграций проекта
  • :version -- Даёт возможность накатить или откатить определённую миграцию

    php bin/console doctrine:migrations:version 20170925141401 --add

    php bin/console doctrine:migrations:version 20170925141401 --delete

Symfony4

В Symfony 4 создание миграции происходит с помощью команды:

php bin/console make:migration

Данная команда одновременно создаёт класс миграции, определяет различия между БД и структурой сущностей и сразу добавляет в класс код, удаляющий эти различия.

Источник

Документация Symfony: https://symfony.com/doc/current/bundles/...

vedro-compota's picture

добавил в залоговке что это именно Doctrine -- так как symfony вообще говоря может работать с разными библиотеками ORM

_____________
матфак вгу и остальная классика =)