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

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

  • 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 - Загрузка фикстур в БД в консоли
Скрытый контент
Комментарии (21)
Arunas

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

Ответить
Igor

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

Ответить
Дмитрий Елисеев

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

Ответить
Sergei

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

Ответить
Дмитрий Елисеев

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

Ответить
Дмитрий Елисеев

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

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

Ответить
Руслан

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

Ответить
Igor

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

Ответить
Дмитрий Елисеев

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

Ответить
Дмитрий Ориховский

Привет. У себя делаю команду 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

здравствуйте, сегодня при 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

Ответить
Дмитрий Ориховский

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

Ответить
Дмитрий Ориховский

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

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

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

Ответить
Дмитрий Елисеев

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

... composer app migrations:migrate -- --no-interaction
Ответить
Arunas

в 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)

Ответить
Дмитрий Елисеев

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

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

Ответить
Arunas

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

Ответить
Олег

Дмитрий, добрый день! Вопрос не по уроку Подскажите пжл, как в psalm описать stdClass, как мы описывали массив с динамическими значениями? Всю документацию и issue на github перерыл, так и не понял как это сделать. Если вы в курсе, подскажите пжл

Ответить
Дмитрий Елисеев
@psalm-var object{foo:string}
Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий