मैंने डेटाबेस से दो कनेक्शन कॉन्फ़िगर किए हैं। एक कनेक्शन को उपयोगकर्ता कहा जाता है और अन्य को क्लाइंट कहा जाता है। यह config.yml फ़ाइल में कॉन्फ़िगरेशन है:सिम्फनी 3.3 सीम में एकाधिक इकाई प्रबंधक सेवा तर्क के रूप में काम नहीं करने के लिए
doctrine:
dbal:
default_connection: client
connections:
client:
driver: pdo_mysql
host: '%client_database_host%'
port: '%client_database_port%'
dbname: '%client_database_name%'
user: '%client_database_user%'
password: '%client_database_password%'
charset: UTF8
mapping_types:
enum: string
user:
driver: pdo_mysql
host: '%user_database_host%'
port: '%user_database_port%'
dbname: '%user_database_name%'
user: '%user_database_user%'
password: '%user_database_password%'
charset: UTF8
mapping_types:
enum: string
orm:
auto_generate_proxy_classes: '%kernel.debug%'
default_entity_manager: ~
entity_managers:
client:
naming_strategy: doctrine.orm.naming_strategy.underscore
mappings:
ProjectModelBundle: ~
connection: client
user:
naming_strategy: doctrine.orm.naming_strategy.underscore
mappings:
BaseModelBundle: ~
ProjectModelBundle: ~
connection: user
लेकिन मुझे हमेशा पहले इकाई प्रबंधक मिल रहा है इससे कोई फर्क नहीं पड़ता। यह वह जगह है मैं कैसे उपयोग कर रहा हूँ इकाई प्रबंधक की सेवाओं में:
# BASE
htec.project_model_bundle.repository.database.client_base:
class: Project\BaseModelBundle\Repository\Database\DatabaseRepository
arguments: ['@service_container', '@doctrine.orm.client_entity_manager', '@form.factory']
htec.project_model_bundle.repository.database.user_base:
class: Project\BaseModelBundle\Repository\Database\DatabaseRepository
arguments: ['@service_container', '@doctrine.orm.user_entity_manager', '@form.factory']
लेकिन कोई फर्क नहीं पड़ता कि मुझे क्या करना है, मैं हमेशा पहले इकाई प्रबंधक है कि मैं orm- के तहत परिभाषित किया है> मिल entity_managers सेटिंग्स। उदाहरण के लिए यदि इस तरह कॉन्फ़िगर ORM:
orm:
auto_generate_proxy_classes: '%kernel.debug%'
default_entity_manager: ~
entity_managers:
client:
naming_strategy: doctrine.orm.naming_strategy.underscore
mappings:
ProjectModelBundle: ~
connection: client
user:
naming_strategy: doctrine.orm.naming_strategy.underscore
mappings:
BaseModelBundle: ~
ProjectModelBundle: ~
connection: user
मैं हमेशा क्लाइंट इकाई प्रबंधक मिल जाएगा, भले ही मैं आपूर्ति '@ doctrine.orm.user_entity_manager' सेवा तर्क के रूप में।
अगर मैं कॉन्फ़िगर इस तरह ORM:
orm:
auto_generate_proxy_classes: '%kernel.debug%'
default_entity_manager: ~
entity_managers:
user:
naming_strategy: doctrine.orm.naming_strategy.underscore
mappings:
BaseModelBundle: ~
ProjectModelBundle: ~
connection: user
client:
naming_strategy: doctrine.orm.naming_strategy.underscore
mappings:
ProjectModelBundle: ~
connection: client
मैं हमेशा उपयोगकर्ता इकाई प्रबंधक मिल जाएगा, भले ही मैं आपूर्ति '@ doctrine.orm.client_entity_manager' सेवा तर्क के रूप में।
मैं यहाँ क्या गलत कर रहा हूं?
आप की जाँच की है 'बिन/सांत्वना डिबग : कंटेनर doctrine.orm.client_entity_manager' (या अन्य) क्या कंटेनर में सेवाएं सही तरीके से पंजीकृत हैं या नहीं? – dbrumann
क्या आपने '@ doctrine' का उपयोग करने का प्रयास किया है जो आपको एक [रजिस्ट्री] (https://github.com/doctrine/DoctrineBundle/blob/master/Registry.php) देता है जिसके साथ आप 'getEntityManagerForClass()' को पुनर्प्राप्त करने के लिए उपयोग कर सकते हैं आपकी सेवाओं के अंदर किसी भी कक्षा के लिए सही इकाई प्रबंधक? – dbrumann