Миграции и фикстуры

Написание и генерирование миграций для автоматизации создания и изменения структуры БД. Использование фикстур для автозаполнения таблиц демонстрационными данными.

  • 00:01:37 - Автовалидация мэппинга сущностей и схемы базы данных
  • 00:03:55 - Создание и изменение таблиц командами schema-tool
  • 00:09:32 - Управление схемой через миграции
  • 00:14:55 - Обзор пакета миграций Phinx от Cake PHP
  • 00:17:25 - Подключение Doctrine Migrations
  • 00:21:03 - Настройки параметров миграций
  • 00:27:31 - Подсказки для кастомных типов данных
  • 00:31:15 - Исправление CREATE SCHEMA public
  • 00:37:49 - Добавление команд в Makefile
  • 00:38:58 - Ожидание работы БД через wait-for-it в Docker
  • 00:43:59 - Запуск миграций в Production
  • 00:48:28 - Необходимость ручного исправления миграций
  • 00:50:49 - Заполнение таблиц демонстрационными данными
  • 00:51:50 - Подключение Doctrine Data Fixtures
  • 00:56:32 - Загрузка фикстур в БД в консоли
Скрытый контент
Комментарии (19)
Arunas
2020-03-03 18:24

Спасибо, отличный урок.

Ответить
Igor
2020-03-03 20:02

Дмитрий, не задумывались ли вы над созданием мастер класса по Java/Spring?

Ответить
Deworker Pro
2020-03-04 11:34

Пока не задумывались.

Ответить
Sergei
2020-03-04 14:47

У меня коллега по работе прокомметировал ваш конфиг доктрины, говорит: я первый раз вижу, чтобы на симфони кто то конфиг доктрины описывал в php, а не в yml :)

Ответить
Deworker Pro
2020-03-04 19:00

В Symfony 2 и 3 это было популярно, но сейчас в документации больше склоняются к аннотациям.

Ответить
Deworker Pro
2020-03-05 16:40

А, вы про сам конфиг подключения в Yaml, а не про конфиги мэппинга в аннотациях или Yaml.

Тогда да, в Symfony все конфиги по умолчанию в Yaml, включая доктриновские. И их там разбирает сам DoctrineBundle. Но мы используем Doctrine напрямую без Symfony-бандла, поэтому всё объекты в контейнере собираем сами.

Ответить
Руслан
2020-03-06 10:24

Дмитрий, здравствуйте, вопрос немного не по теме - если на симфони какие-либо готовые системы Single Sign On Authentication? Если нет, подскажите в какую сторону смотреть, спасибо

Ответить
Igor
2020-03-07 15:13

А почему вы используете run - - rm, а не exec, как раньше? Есть какое-то преимущество?

Ответить
Deworker Pro
2020-03-10 09:16

Работу run --rm удобнее отслеживать и он более соответствует философии запуска процесса.

Ответить
Дмитрий Ориховский
2020-03-07 20:01

Привет. У себя делаю команду migrations:migrate выдает ошибку:

WARNING! You are about to execute a database migration that could result in schema changes and data loss. Are you sure you wish to continue? (y/n)

Aborted.

Пробую migrations:migrate --no-interaction тоже ошибка, команда не воспринимает аргументы

Ответить
Arunas
2020-03-08 11:52

здравствуйте, сегодня при make init, (при docker-compose run --rm api-php-cli composer update, а не install) все библиотеки обновились успешно, тесты также прошли, но миграции застряли: ошибка: WARNING! You are about to execute a database migration that could result in schema changes and data loss. Are you sure you wish to continue? (y/n) Aborted. http://www.arvidija.lt/Galerija/290.jpg

Ответить
Дмитрий Ориховский
2020-03-08 12:17

У меня тоже самое. (:

Ответить
Дмитрий Ориховский
2020-03-10 09:30

Смог запустить через bin/app.php. Вот команда:

docker-compose run --rm api-php-cli php bin/app.php --ansi migrations:migrate --no-interaction

Я погуглил немного и нашол что это может быть баг в php7.4. Но это неточно :)

Ответить
Deworker Pro
2020-03-10 10:01

В Symfony 5.0.5 они убрали неявную неинтерактивность. Добавьте пока флаг явно:

... composer app migrations:migrate -- --no-interaction
Ответить
Arunas
2020-03-12 17:37

в Makefile с composer app migrations:migrate -- --no-interaction все равно не работает, а docker-compose run --rm api-php-cli php bin/app.php --ansi migrations:migrate --no-interaction - миграций действует и фикстуры проходит (здесь насчет composer update)

Ответить
Deworker Pro
2020-03-13 11:11

Обсуждаем в issues. Уже есть Pull Request с фиксом.

Откатитесь пока назад на 5.0.4.

Ответить
Arunas
2020-03-13 11:33

спасибо, понял

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий