2016-06-23 15 views
3

i yml Entität erstellen, Organisation und Konfiguration mehrere VerbindungenSymfony2 Lehre ORM-Manager namens „db2“ existiert nicht

config.yml

# Doctrine Configuration 
doctrine: 
dbal: 
    default_connection: db1 
    connections: 
     db1: 
      driver: '%database_driver%' 
      host:  '%database_host%' 
      port:  '%database_port%' 
      dbname: '%database_name%' 
      user:  '%database_user%' 
      password: '%database_password%' 
      charset: UTF8 
     db2: 
      driver: '%database_driver2%' 
      host:  '%database_host2%' 
      port:  '%database_port2%' 
      dbname: '%database_name2%' 
      user:  '%database_user2%' 
      password: '%database_password2%' 
      charset: UTF8 
    orm: 
     auto_generate_proxy_classes: "%kernel.debug%" 
     naming_strategy: doctrine.orm.naming_strategy.underscore 
     auto_mapping: true 

mein orm.yml

TestBundle\Entity\Test: 
type: entity 
table: Test 
id: 
    id: 
     type: integer 
     nullable: false 
     options: 
      unsigned: true 
     id: true 
fields: 
    name: 
     type: string 
     nullable: false 
     length: 255 
     options: 
      fixed: false 
lifecycleCallbacks: { } 
erzeugen

Nach der Säuberung des Caches und dem Generieren der Entitäten versuche ich, diesen Code auszuführen (im Command Controller)

<?php 

... 

protected function execute(InputInterface $input, OutputInterface $output) 
{ 
    $doctrine = $this->getContainer()->get('doctrine')->getManager('db2'); 
    //both methods cant work :(db2_entity_manager not found 
    $doctrine = $this->getContainer()->get('doctrine.orm.db2_entity_manager'); 

    $test = $doctrine->getRepository('DionisDataBaseBundle:Test'); 

} 

Und ich habe Fehler:

[InvalidArgumentException]
Doctrine ORM Manager named "db2" does not exist.

Antwort

1

Änderung config.yml zu

orm: 
    auto_generate_proxy_classes: "%kernel.debug%" 
    default_entity_manager: db1 
    entity_managers: 
     db1: 
      connection: db1 
      mappings: 
       DionisDataBaseBundle: ~ 
     db2: 
      connection: db2 
      mappings: 
       DionisDataBaseBundle: ~ 
     db3: 
      connection: db2 
      mappings: 
       DionisDataBaseBundle: ~ 
0

Sie nur Verbindungen erklärt, aber keine Einheit Manager, von einem meiner Projekte:

doctrine: 
    dbal: 

     default_connection: default 
     connections: 
      default: 
       host:  "%database_host%" 
       dbname: "%database_name%" 
       user:  "%database_user%" 
       password: "%database_password%" 
       driver_class: Realestate\MssqlBundle\Driver\PDODblib\Driver 
       mapping_types: 
        enum: string 
        string: string 
       # schema_filter: ~^(sf_fos_user)~ 
      prod: 
       host:  ***** 
       dbname: **** 
       user:  "%database_user%" 
       password: "%database_password%" 
       driver_class: Realestate\MssqlBundle\Driver\PDODblib\Driver 
       mapping_types: 
        enum: string 
        string: string 
       # schema_filter: ~^(sf_fos_user)~ 

    orm: 
     default_entity_manager: default 
     entity_managers: 
      default: 
       connection: default 
       mappings: 
        AppBundle: ~ 
        Bundle2: ~ 
      db2: 
       connection: prod 
       mappings: 
        otherBundle: ~ 
     auto_generate_proxy_classes: "%kernel.debug%"