Ok. Пытался отредактировать исходный пост, но он ждет рецензирования. Не уверен, сколько времени это займет. Попробуйте изменить конфигурации для:
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 и выполнить тестовый запрос для обоих менеджеров. Затем вернитесь в свой код.
=========================================
It теперь понимается, что реальная цель состоит в том, чтобы два менеджера сущностей указывали на один и тот же набор объектов, но каким-то образом указывали, что каждый менеджер объектов должен ограничиться определенным набором этих объектов. И это не то, что S2 поддерживает из коробки.
Вы можете ознакомиться с руководством по Doctrine и посмотреть, как он обрабатывает метаданные объекта и, возможно, что-то сделать с этим, но это может усложниться.
Единственная вещь, которую предлагает S2 - это возможность привязать диспетчер сущности ко всем сущностям в одном или нескольких пакетах с использованием атрибута сопоставления. Если вы хотели бы поделиться тремя из семи объектов из одного пакета с другим пакетом, тогда вы просто воссоздаете эти объекты во втором комплекте. Возможно, расширив класс, чтобы избежать дублирования кода.
Я думаю, вы можете немного изменить свой подход. Если у вас есть набор основных объектов, совместно используемых с несколькими пакетами, тогда поместите их в свой собственный пакет. Затем каждый из них на пучке может добавлять дополнительные сущности.
Пожалуйста, пост простой пример того, что происходит сбой. Оба ваших соединения указывают на одну и ту же базу данных? Похоже, вы также должны иметь auto_generate_proxy_classes и, возможно, auto_mapping, но, возможно, нет. Попробуйте «php app/console doctrine: mapping: info --em» с первым, а затем другим менеджером сущностей. – Cerad
Привет! Я использую две разные базы данных с двумя разными соединениями. Отображение: info говорит, что у меня нет сущностей, обработанных менеджером сущностей по умолчанию, все мои сущности обрабатываются electra. – gabrielthorn
Это означает, что у вас есть проблема с конфигурацией. Пожалуйста, разместите сопоставления соединений. doctrine: mapping: info должен возвращать тот же список объектов для обеих em. Убедитесь, что у вас есть строка auto_generate и что вы работаете в режиме разработки. – Cerad