Написание и генерирование миграций для автоматизации создания и изменения структуры БД. Использование фикстур для автозаполнения таблиц демонстрационными данными.
- 00:00:46 Автовалидация маппинга сущностей и схемы базы данных
- 00:02:55 Создание и изменение таблиц командами schema-tool
- 00:08:07 Управление схемой через миграции
- 00:13:33 Обзор пакета миграций Phinx от Cake PHP
- 00:15:53 Подключение Doctrine Migrations
- 00:17:25 Обзор консольных команд
- 00:19:18 Настройки параметров миграций
- 00:21:22 Транзакции для схемы в PostgreSQL
- 00:23:39 Кастомное подключение команд
- 00:24:43 Автогенерация миграции
- 00:25:52 Подсказки для кастомных типов данных
- 00:29:41 Проблема CREATE SCHEMA public
- 00:31:26 Применение изменений
- 00:32:47 Исправление SCHEMA public
- 00:36:15 Добавление команд в Makefile
- 00:37:24 Ожидание работы БД через wait-for-it в Docker
- 00:42:30 Запуск миграций в Production
- 00:47:04 Необходимость ручного исправления миграций
- 00:49:20 Заполнение таблиц демонстрационными данными
- 00:50:30 Подключение Doctrine Data Fixtures
- 00:55:17 Загрузка фикстур в БД в консоли
- 00:57:14 Консольная команда загрузки
- 01:00:53 Обзор результата
- 01:02:40 Удобство фикстур для команды программистов
Скрытый контент (код, слайды, ...) для подписчиков.
Открыть →Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram
Спасибо, отличный урок.
Дмитрий, не задумывались ли вы над созданием мастер класса по Java/Spring?
Пока не задумывались.
У меня коллега по работе прокомметировал ваш конфиг доктрины, говорит: я первый раз вижу, чтобы на симфони кто то конфиг доктрины описывал в php, а не в yml :)
В Symfony 2 и 3 это было популярно, но сейчас в документации больше склоняются к аннотациям.
https://symfony.com/doc/current/reference/configuration/doctrine.html
Открыл 5-ю документацию, там в первой половине страницы php варианта вообще нет :) Начинается только с раздела custom
А, вы про сам конфиг подключения в Yaml, а не про конфиги мэппинга в аннотациях или Yaml.
Тогда да, в Symfony все конфиги по умолчанию в Yaml, включая доктриновские. И их там разбирает сам DoctrineBundle. Но мы используем Doctrine напрямую без Symfony-бандла, поэтому всё объекты в контейнере собираем сами.
Дмитрий, здравствуйте, вопрос немного не по теме - если на симфони какие-либо готовые системы Single Sign On Authentication? Если нет, подскажите в какую сторону смотреть, спасибо
http://www.mmilojevic.com/single-sign-on-authentication-in-symfony-3/
А почему вы используете 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 тоже ошибка, команда не воспринимает аргументы
здравствуйте, сегодня при 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. Вот команда:
Я погуглил немного и нашол что это может быть баг в php7.4. Но это неточно :)
В Symfony 5.0.5 они убрали неявную неинтерактивность. Добавьте пока флаг явно:
в 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.
спасибо, понял
Дмитрий, добрый день! Вопрос не по уроку Подскажите пжл, как в psalm описать stdClass, как мы описывали массив с динамическими значениями? Всю документацию и issue на github перерыл, так и не понял как это сделать. Если вы в курсе, подскажите пжл
Здравствуйте Дмитрий! Помогите пожалуйста разобраться со след проблемой: С целью немного разобраться с Doctrine и миграциями пробовал дописывать нотации и генерировать новые миграции по разнице в коде. И когда я запускаю просто docker-compose run --rm api-php-cli composer app migrations:migrate не примененные миграции находятся и все применяется без проблем. Но если попробовать запустить например docker-compose run --rm api-php-cli composer app migrations:execute -- --dry-run Version20201106201722 или -- --down Version20201106201722 - вылетает ошибка что файл миграции не найден. Я перепробовал массу вариантов - указывал полный путь /app/src/Data/Migration/Version20201106201722 и пути из migrations:status из пространства имен, в том числе и из контейнера запустив docker-compose run --rm api-php-cli bash - результат один и тот же - файл миграции не найден! Собственно вопрос - как в случае применения миграций в ручную через migrations:execute правильно указать путь в файлу миграции? Спасибо!
Возможно кому пригодиться - указывать путь необходимо как строку с пространством имен: например для --down это: docker-compose run --rm api-php-cli composer app migrations:execute -- --down 'App\Data\Migration\Version20201106201722'
Указывайте просто номер:
Добрый день!
Застрял с фикстурами. не принимает тип mixed
Не пойму, где напортачил.
Сверял код с исходным кодом все ок.
Подскажите плиз, где косяк?
Псевдотип
mixed
появился только в PHP 8.0Спасибо
Подскажите плиз!
Mapping проходит успешно. но при запуске любой команды типа
In AbstractPostgreSQLDriver.php line 88:
не могу найти, где изменить юзера, в yml объявлен POSTGRES_USER: app, в PHPStorm всё работает.
Укажите DB_USER в environments самого api-php-cli
Дмитрий, это как раз указано в docker-compose.yml
Через PHPStorm доступ к базе данных нормальный, могу работать с ней и запускать SQL, а через командную строку нет.
UPDATE: проблема решилась добавлением DB_URL в api-php-cli environment
Мы от общего DB_URL в итоге перешли к указанию отдельных параметров DB_HOST, DB_USER и т.п.
Не используйте оба подхода одновременно.
Добрый вечер, Дмитрий.
Можно ли как-то исключить из команды migration:diff некоторые таблицы, которые создавались до подключения doctrine и наследуются от ActiveRecord?
Нужные таблицы, в которых надо отследить изменения начинаются с amqp_
Пробовал использовать фильтр, но результата не дало.
Проблема решилась.
Первая причина была в том, что при вызове консольной команды надо указывать два дефиса, тогда команда будет правильно воспринимать --filter-expression
Вторая была в pattern-е, необходимо изменить на такой
Чтобы не прописывать это каждый раз флагами можно настроить игнорирование глобально:
Именно так и сделал, спасибо.
Или войти через: