Doctrine ORM предоставляет разработчику удобные средства выборки данных. Это и мощный DQL для работы в объектно-ориентированном ключе, и удобный Query Builder, простой и понятный в использовании. Они покрывают большую часть потребностей, но иногда возникает необходимость использовать SQL запросы, оптимизированные или специфичные для конкретной СУБД. Для работы с результатами запросов в коде важно понимание того, как работает маппинг в Doctrine.
Что такое миграции? Это что-то вроде системы контроля версий для вашей базы данных. Они позволяют вашей команде изменять структуру БД, в то же время оставаясь в курсе изменений других участников. Миграции обычно идут рука об руку с построителем структур для более простого обращения с архитектурой вашей базы данных. Если вы когда-нибудь просили коллегу вручную добавить столбец в его локальную БД, значит вы сталкивались с проблемой, которую решают миграции БД.
Команды Symfony для работы с Doctrine
php bin/console list doctrine
— Выводит все возможные консольных команд для работы с Doctrine.
php bin/console doctrine:query:sql -h
— Любая консольная команда с ключом -h выведет подробную справку по команде.
php bin/console make:entity
— Создает новую сущность Entity для таблиц в БД. Также команда позволяет добавить новые свойства в уже существующий Entity.
php bin/console doctrine:cache:clear
— Очищает кеш Doctrine.
php bin/console doctrine:database:create
— Создает структуру БД через Doctrine.
php bin/console doctrine:database:drop
— Удаляет БД через Doctrine.
php bin/console doctrine:database:import
— Импортирует файлы SQL непосредственно в базу данных.
php bin/console doctrine:ensure-production-settings
— Проверяет, что Doctrine правильно настроена для production среды
php bin/console doctrine:fixtures:load
— Загружает fixtures в БД.
php bin/console doctrine:fixtures:load
—append
php bin/console doctrine:fixtures:load
—purge-with-truncate
php bin/console doctrine:query:sql -V
Команды Symfony для работы с миграциями
php bin/console make:migration
— Создает файл миграции с SQL кодом
php bin/console doctrine:migrations:migrate
— Выполняет все миграции (будут применены только ранее не выполненные) (одним из вариантов использования: эту команду следует запускать на продакшене при развертывании).
php bin/console doctrine:migrations:execute —up 20200405164707
— Применяет конкретную миграцию, для этого после —up передаем аргументом номер миграции (20200405164707).
php bin/console doctrine:migrations:execute —down 20200405164707
— Откатывает конкретную миграцию, для этого после —down передаем аргументом номер миграции (20200405164707).
php bin/console doctrine:migration:generate
— Создает шаблон файла миграции (будет без sql кода)