Хорошо.Попытался отредактировать ваш оригинальный пост, но он ожидает экспертной оценки.Не уверен, сколько времени это займет.Попробуйте изменить конфигурацию на:
doctrine:
dbal:
default_connection: default
connections:
default:
dbname: old_project
user: root
password: 123123
host: 1.1.1.1
port: 1
# Make an explicit connection just for clarity
old_project:
dbname: old_project
user: root
password: 123123
host: 1.1.1.1
port: 1
electra:
dbname: electra
user: root
password: 123123
host: 2.2.2.2
port: 2
orm:
# Humor me and add these
auto_generate_proxy_classes: %kernel.debug%
# auto_mapping: true
default_entity_manager: electra
entity_managers:
# Make an explicit old_project em so default does not confuse us
old_project:
connection: old_project
mappings:
XXDemoBundle: ~
electra:
connection: electra
mappings:
XXDemoBundle: ~
default:
connection: default
mappings:
XXDemoBundle: ~
Теперь полностью удалите из кеша, чтобы быть уверенным, затем запустите:
php app/console doctrine:mapping:info --em electra
php app/console doctrine:mapping:info --em old_project
Вы должны получить идентичные результаты.Я проверил это на своей системе, поэтому я вполне уверен, что если у вас его нет, у вас где-нибудь есть опечатка.
Итак, информация о отображении работает.Следующим шагом является проверка того, что обе базы данных соответствуют вашей схеме объекта.Так что сделайте это:
php app/console doctrine:schema:update --em electra --dump-sql
php app/console doctrine:schema:update --em old_project --dump-sql
Ни один из них не должен выдавать никакого вывода.Если это так, это означает, что ваша база данных не соответствует вашим сущностям, и это необходимо разрешить (возможно, с помощью параметра --force), прежде чем запросы будут работать.
Как только базы данных синхронизированы, вам, вероятно, следует использоватьdoctrine: query: dql и выполните тестовый запрос для обоих менеджеров.Затем вернитесь в свой код.
========================================
Теперь стало понятно, что реальная цель состоит в том, чтобы два менеджера сущностей указывали на один и тот же набор сущностей, но каким-то образом указывали, что каждый менеджер сущности должен ограничивать себя определенным набором этих сущностей.И это не то, что S2 поддерживает «из коробки».
Вы можете просмотреть руководство по Doctrine и посмотреть, как оно обрабатывает метаданные сущности, и, возможно, что-то с этим сделать, но это может стать сложным.
Единственное, что действительно предлагает S2, - это возможность связать менеджер сущностей со всеми сущностями в одном или нескольких пакетах, используя атрибут сопоставления.Если вы хотите поделиться, скажем, тремя из семи сущностей из одного пакета с другим пакетом, то вы просто воссоздаете эти объекты во втором пакете.Возможно, за счет расширения класса, чтобы избежать дублирования кода.
Я думаю, что вы, возможно, захотите немного изменить свой подход.Если у вас есть набор основных сущностей, совместно используемых несколькими пакетами, поместите их в свой собственный пакет.Каждый следующий пакет может добавить дополнительные объекты.