Как установить исходные данные (не тестовые данные) в Symfony с доктриной ORM

Я новичок в изучении Symfony (Symfony 4.1.6) и не могу понять этого.

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

Есть ли способ «добавить» эти данные в базу данных и отследить их? (через git) или мне следует прибегнуть к хранению файла SQL только с "вставками"

Я посмотрел на приспособления, но, похоже, они в основном предназначены для фиктивных данных. Я хочу вставить реальные данные. Какова лучшая практика, если таковая существует?

**** ОБНОВЛЕНИЕ ****
Я должен добавить, что разработка этого проекта началась за пределами Symfony, и поэтому база данных уже была создана вручную с несколькими записями. Я использовал bin/console doctrine:mapping:import 'App\Entity' annotation --path=src/Entity для создания сущностей.

Есть ли аналогичный способ "высосать" несколько записей из базы данных?

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

При дальнейшем чтении и осмотре приспособлений я вижу, что они настроены только как среда разработки - и действительно не для производственного использования. Я склоняюсь к миграции, поскольку это кажется наиболее разумным. Я надеюсь, что может быть "автоматический" способ сгенерировать это.

Chad 01.11.2018 14:37

Миграции делают разницу между вашими объектами и текущим макетом базы данных и автоматически генерируют класс миграции на этом основании.

Łukasz Jakubek 02.11.2018 07:26
Стоит ли изучать 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 и хотите разрабатывать...
9
2
5 051
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Приспособления также хороши для этого варианта использования, но будьте осторожны, чтобы ничего случайно не перезаписать.

Если вам нужно заполнить их только один раз, миграции - хороший вариант. (Вы должны использовать это в любом случае для управления изменениями схемы.) Например, я почти всегда использую миграцию для вставки пользователей-администраторов и некоторых других действительно «фиксированных» данных.

как добиться миграции для «сбора» данных, а не только изменения схемы? Мне это кажется более подходящим.

Chad 31.10.2018 20:16

Просто напишите SQL, как обычно. Миграции помогут вам отследить, что установлено, а что нет.

Padam87 31.10.2018 21:48

Вы также можете рассмотреть возможность миграции ContainerAware symfony.com/doc/master/bundles/DoctrineMigrationsBundle/…

Padam87 31.10.2018 21:49

может вы ищете https://phinx.org/ или что-то в этом роде?

редактировать: http://docs.phinx.org/en/latest/migrations.html#inserting-data

Ответ принят как подходящий

В symfony работа с производственной базой данных, как правило, основана на создании и выполнении миграций благодаря DoctrineMigrationBundle.

Всегда, когда вы вносите какие-либо изменения в сущность, вам необходимо обновить макет базы данных. Вы делаете это, создавая миграцию с помощью команды doctrine:migrations:diff, внимательно просматривая класс миграции и после этого выполняя его на рабочем сервере с помощью команды doctrine:migrations:migrate. Речь идет о схеме базы данных.

В свою очередь, когда вам нужно вставить, удалить или обновить предопределенные данные купола в базе данных, вы можете создать пустой класс миграции с помощью doctrine:migrations:generate и заполнить все, что захотите. Вот несколько примеров: - Напишите необработанные запросы sql и выполните - это самый простой способ, подходящий для простых данных - Создание сущностей и сохранение с помощью диспетчера сущностей - Загрузить базу данных приспособлений - это наиболее сложное решение.

Таким образом, вы не потеряете данные, уже хранящиеся в производственной базе данных, при обновлении приложения.

Дополнительные сведения см. В документации DoctrineMigrationsBundle: https://symfony.com/doc/master/bundles/DoctrineMigrationsBundle/index.html, а также в документации DoctrineFixturesBundle: https://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html

Я думаю это ответ

Chad 02.11.2018 12:17

создание моих собственных операторов INSERT INTO ... в src/Migrations/Version.....php было правильным решением

Chad 02.11.2018 19:38

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