Перейти к основному содержимому

Миграции

Одной из типичных задач при развитии приложений является необходимость миграции данных и структур данных в определенный формат. Распространенными примерами являются добавление новой колонки в таблицу базы данных или изменение существующих данных.

Чтобы обеспечить возможность выполнения изменений через миграции в различных окружениях, Pimcore интегрирует библиотеку Doctrine Migrations Bundle, которая предоставляет мощный фреймворк для этих целей.

Для создания миграций, специфичных для вашего проекта или бандла, вы можете просто следовать официальному руководству Doctrine. Однако Pimcore добавляет одну небольшую, но полезную функцию к стандартным командам Doctrine Migrations Bundle. Обычно Doctrine Migrations просто запускает или выводит список всех доступных миграций, определенных в конфигурации. Поскольку бывает полезно отфильтровать миграции для определенного пути (ядро, бандл или проект), Pimcore добавляет опцию --prefix ко всем командам Doctrine. Это позволяет фильтровать миграции по заданному пространству имен (namespace).

Если вы хотите создавать миграции для своего бандла, пожалуйста, ознакомьтесь с нашей документацией по бандлам. Мы предоставляем настроенный абстрактный класс для бандлов, который делает их использование еще более удобным.

Примеры команд

# Запустить миграции только ядра Pimcore  
./bin/console doctrine:migrations:migrate --prefix=Pimcore\\Bundle\\CoreBundle

# Запустить миграции конкретного бандла
./bin/console doctrine:migrations:migrate --prefix=Vendor\\PimcoreExampleBundle

# Генерировать миграцию, специфичную для проекта
./bin/console doctrine:migrations:generate --namespace=App\\Migrations

# Запустить миграции проекта
./bin/console doctrine:migrations:migrate --prefix=App\\Migrations

Примеры конфигурации для вашего проекта (config/config.yaml)

doctrine_migrations:  
migrations_paths:
'App\Migrations': '%kernel.project_dir%/src/Migrations'

Запуск всех доступных миграций после composer update

Если вы хотите запускать все доступные миграции после выполнения composer update , включая миграции бандлов и вашего приложения, просто добавьте следующую часть в ваш файл composer.json.

"post-update-cmd": [  
"./bin/console doctrine:migrations:migrate"
]


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.