Схема доктрины Создать только для одного комплекта - PullRequest
4 голосов
/ 31 января 2012

Как мне сказать Symfony генерировать таблицы только для одного пакета?

Каждый раз, когда я создаю пакет и запускаю:

php app/console doctrine:schema:create

Создает в моей текущей базе данных (для конкретного пакета) ВСЕ таблицы из ВСЕХ моих пакетов. И мне это не нужно.

Ответы [ 4 ]

2 голосов
/ 19 октября 2013

Иногда использование php app/console doctrine:schema:update --force не решает проблему, поэтому вы можете просто комментировать другие пакеты из AppKernel.php в $ bundles, а затем снова использовать php app/console doctrine:schema:update --force, это должно работать.

Don 'не забудьте раскомментировать комментарии.

2 голосов
/ 01 февраля 2012

Когда вы создаете новый пакет, просто используйте

app/console doctrine:schema:update

Поскольку ваша схема уже существует.

1 голос
/ 19 июня 2016

Предположим, у вас есть Bundle, который использует базу данных MySQL, которая находится внутри папки в каталоге src, например:

src/Folder/BundleFolder/

И еще один Bundle, который использует базу данных Postgresql, которая находится в вашем каталоге src, скажем:

src/OtherBundle

Чтобы отобразить доктрину для определенных менеджеров сущностей, используйте это conf в вашем файле app / config / config.yml:

orm:
    #auto_mapping: true 
    #default_entity_manager: default
    entity_managers:
        default:
            connection: mysql
            mappings:
                FolderBundleFolder : ~
        other:
            connection: pgsql
            mappings:
                OtherBundle : ~

Тогда, как сказал пользователь 3580495, используйте команду:

php app/console doctrine:schema:create --em=other --dump-sql

чтобы посмотреть, что произойдет в базе данных postgresql.

php app/console doctrine:schema:update --em=default --dump-sql

покажет вам команды SQL, которые будут выполняться в базе данных MySQL.

В файле conf файла не забывайте комментарий, подобный этому:

#auto_mapping: true 
#default_entity_manager: default

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

Не забывайте, что параметр --help всегда ваш друг для команд Symfony, а также вы найдете много информации в документации:

http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html

1 голос
/ 06 августа 2015

Если ваши пакеты сопоставлены с разными менеджерами сущностей, вы можете (или должны) использовать аргумент «--em entity_manager_name» для команды обновления схемы.

Пример:

app/console doctrine:schema:update --em my_own_entity_manager_name
...