Как установить исходные данные (не тестовые данные) в Symfony с доктриной ORM - PullRequest
0 голосов
/ 31 октября 2018

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

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

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

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

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

Есть ли подобный способ также "высосать" несколько записей из БД?

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

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

может быть, вы ищете https://phinx.org/ или что-то подобное?

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

0 голосов
/ 31 октября 2018

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

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

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

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

Подробнее в DoctrineMigrationsBundle docs: https://symfony.com/doc/master/bundles/DoctrineMigrationsBundle/index.html, а также DoctrineFixturesBundle docs: https://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html

0 голосов
/ 31 октября 2018

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

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

...