2017-05-04 1 views
0

J'ai utilisé doctrine2 dans zf3, tandis que connecter plusieurs db causé une erreur. Ensuite Voici ma config dans global.phpdoctrine2 multiple db connect dans zf3?

return [ 
    'doctrine' => [ 
     'connection' => [ 
      'orm_default' => [ 
       'driverClass' => PDOMySqlDriver::class, 
       'params' => [ 
        'host'  => '127.0.0.1', 
        'user'  => 'root', 
        'password' => '123456', 
        'dbname' => 'zf3.com', 
        'charset' => 'utf8', 
       ] 
      ], 
      'orm_passport' => [ 
       'driverClass' => PDOMySqlDriver::class, 
       'params' => [ 
        'host'  => '127.0.0.1', 
        'user'  => 'root', 
        'password' => '123456', 
        'dbname' => 'zf3.com.passport', 
        'charset' => 'utf8', 
       ] 
      ], 
     ], 
     'entitymanager' => [ 
      'orm_passport' => [ 
       'connection' => 'orm_passport', 
      ] 
     ], 
    ], 
]; 

Et config pilote dans module.config.php comme suit:

'doctrine' => [ 
     'driver' => [ 
      __NAMESPACE__ . '_driver' => [ 
       'class' => AnnotationDriver::class, 
       'cache' => 'array', 
       'paths' => [__DIR__ . '/../src/Entity'] 
      ], 
      'orm_passport' => [ 
       'drivers' => [ 
        __NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver' 
       ] 
      ] 
     ] 
    ], 

Dans mon IndexController.php

public function indexAction() 
    { 
     // Get recent users 
     $users = $this->entityManager->getRepository(Users::class) 
      ->findBy(['status'=>Users::ACTIVE_STATUS_NO],['timeCreated'=>'DESC']); 

     //\Doctrine\Common\Util\Debug::dump($users); 

     return new ViewModel([ 
      'users' => $users 
     ]); 
    } 

L'erreur message: La classe 'Passport \ Entity \ Users' n'a pas été trouvée dans les espaces de noms configurés en chaîne Application \ Entity

+0

Dans quel espace de noms correspond le contenu du fichier 'module.config.php'? 'Application',' Passeport'? – gsc

+0

je change mon global.php, ajoute quelques choix, ça marche –

Répondre

0

ce qui suit est mon global.php

return [ 
    'doctrine' => [ 
     'connection' => [ 
      'orm_default' => [ 
       'driverClass' => PDOMySqlDriver::class, 
       'params' => [ 
        'host'  => '127.0.0.1', 
        'user'  => 'root', 
        'password' => '123456', 
        'dbname' => 'zf3.com', 
        'charset' => 'utf8', 
       ] 
      ], 
      'orm_passport' => [ 
       'driverClass' => PDOMySqlDriver::class, 
       'params' => [ 
        'host'  => '127.0.0.1', 
        'user'  => 'root', 
        'password' => '123456', 
        'dbname' => 'zf3.com.passport', 
        'charset' => 'utf8', 
       ] 
      ], 
     ], 
     'entitymanager' => [ 
      'orm_passport' => [ 
       'connection' => 'orm_passport', 
       'configuration' => 'orm_passport', 
      ] 
     ], 
     'migrations_configuration' => [ 
      'orm_passport' => [ 
       'directory' => 'data/DoctrineORMModule/Migrations', 
       'name' => 'Doctrine Database Migrations', 
       'namespace' => 'DoctrineORMModule\\Migrations', 
       'table' => 'migrations', 
       'column' => 'version', 
      ], 
     ], 
     'configuration' => [ 
      'orm_passport' => [ 
       'metadata_cache' => 'array', 
       'query_cache' => 'array', 
       'result_cache' => 'array', 
       'hydration_cache' => 'array', 
       'driver' => 'orm_passport', 
       'generate_proxies' => true, 
       'proxy_dir' => 'data/DoctrineORMModule/Proxy', 
       'proxy_namespace' => 'DoctrineORMModule\\Proxy', 
      ] 
     ], 
     'authentication' => [ 
      'odm_passport' => [], 
      'orm_passport' => [ 
       'objectManager' => 'doctrine.entitymanager.orm_passport', 
      ], 
     ], 
     'authenticationadapter' => [ 
      'odm_passport' => true, 
      'orm_passport' => true, 
     ], 
     'authenticationstorage' => [ 
      'odm_passport' => true, 
      'orm_passport' => true, 
     ], 
     'authenticationservice' => [ 
      'odm_passport' => true, 
      'orm_passport' => true, 
     ], 
    ], 
]; 

ça marche!