Symfony 4/doctor вставить исходные данные базы данных

Я использую symfony 4.2 и ищу способ вставить исходные данные в базу данных. То, что я пытался создать, это что-то вроде сценария начальной настройки, который выполняет некоторые вставки sql (например, фикстуры, но также и для производственной среды), которые можно вызвать с помощью консольной команды.

Я думал об использовании функции postUp в классе миграции доктрины, но я не хочу переписывать эту функцию для каждой производственной среды, которую я настраиваю. Есть ли способ использовать функциональность миграции доктрин для этой цели или есть предпочтительный способ?

Пример рабочего процесса:

  • Установите symfony, клонировав репозиторий git
  • Выполнение миграций для создания/обновления таблиц базы данных
  • Выполните сценарий установки, чтобы вставить необходимые значения по умолчанию в таблицы базы данных.

Итак, создайте команду и запустите ее.

u_mulder 08.03.2019 09:54

В итоге я так и сделал. Я создал пользовательскую команду для загрузки диспетчера доктрин с помощью ContainerInterface. Я не был знаком с созданием пользовательской команды. Вот ссылка, которую я использовал: symfony.com/doc/current/console.html

igi 08.03.2019 15:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
2
1 411
1

Ответы 1

Использование комплекта фикстур доктрины в продакшене

Хотя это не рекомендуется, потому что вы можете случайно удалить свою производственную базу данных, я вижу несколько допустимых вариантов использования пакета фикстур dotrine в производственной среде.

Вы можете отредактировать свой config/bundles.php, чтобы включить пакет фикстур доктрины в производственной среде.

Изменять

Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],

к

Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['all' => true],

Создайте свою собственную команду для загрузки прибора

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

$fixtures = (new \Doctrine\Common\DataFixtures\Loader())->loadFromDirectory(__DIR__ . '/../src/DataFixture');
$loader = new \Doctrine\Bundle\FixturesBundle\Loader\SymfonyFixturesLoader(new \Symfony\Component\DependencyInjection\Container());
$loader->addFixtures(
    array_map(
        function ($fixture) {
            return [
              'fixture' => $fixture,
              'groups' => []
            ];
        },
        $fixtures
    )
);

$purger = new Doctrine\Common\DataFixtures\Purger\ORMPurger($entityManager);

$executor = new Doctrine\Common\DataFixtures\Executor\ORMExecutor($entityManager, $purger);
$executor->execute(
    $loader->getFixtures()
);

Другие вопросы по теме