Как привязать таблицу к определенной БД (Symfony, Doctrine)?
Не совсем понял, как организовать привязку отдельно взятой таблицы к определенному entity-manager`у...
В документации описывается только привязка всего бандла, но мой бандл использует оба entity-manager`а, и при попытке выполнить doctrine:schema:update --em=<имя менеджера> все таблицы создаются в дефолтном entity-manager`е, так как бандл маппится в оба em
Еще небольшой вопросик вслед - почему-то если не указать эту аннотацию, то таблица создается не в дефолтном ентити менеджере... Как-то не особо логично, или я чего-то не понимаю?
prototype_denis: так и было, сейчас если указать ключем не дефолтный ентити менеджер при схема апдейте - таблицы создаются в не дефолтном, но я не указывал в этих таблицах привязку к em...
brud: symfony.com/doc/current/bundles/DoctrineMongoDBBun... (на примере конфига для Mongo)
Всю "магию" с вашим бандлом, которую делает доктрина, можно настроить ручками. Для двух разных соединений настройте mapping для каждого соединения. И там уже "рулите" сущностями, относительно соединения.
Надеюсь, хоть как-то помог прояснить ситуацию... =)
Денис: про привязку сущности к соединению все прозрачно, проблема была про привязку отдельной сущности к ентити менеджеру. Есть вариант привязать только через параметр table, но привязка идет именно к названию БД, и переменную из parameters.yml сюда не вставить. И если БД переименуется, то во всех файлах придется править это дело - мне кажется, это неправильным, но других решений я не увидел.
em1:
connection: connection1;
mapping:
A, B, C;
em2:
connection: connection2;
mapping: A, D, E;
entity A
table: tableName;
(так как у вас сущность A везде, то это и будет решением)
doctrine:schema:update --em=em1; // db1.tableName
doctrine:schema:update --em=em2; // db2.tableName
+ настройка окружений. prod, test, dev...
"проблема была про привязку отдельной сущности к ентити менеджеру ... к названию БД" - сущность зависит от em, em зависит от соединения. В соединении и указывается база. То есть после изменения названия db надо изменить одну строку в параметрах.
Пример конфига выше - если сущность в двух базах.
Если сущность не нужна в какой-то, то она игнорируется как раз в config.yml в секции entity_managers (не в parameters.yml) Сами параметры подтянет doctrine из конфига, где и описываются все условия для сущностей.
Денис: дополняю... Отправил раньше времени. В секции entity_managers настройте дефолтный и дополнительный маппиг для вашего бандла. Там и прописывается файл конфигурации. В итоге у вас будет 2 файла конфига, для стандартного и дополнительного em. И именно в этих двух конфигах, которые будут лежать в ресурсах только вашего бандла и настраиваются все сущности отдельно, в том числе ваша "проблемная".
что вы хотите сделать, вообще? Хотите обновить только некоторые таблицы? смотрите в сторону миграций, использование doctrine:schema:update для боевого окружения это выстрел в ногу. А там уже применяйте себе к каким хотите таблицам
гуглить symfony2 doctrine migration