2011-09-23 97 views
1

在我的Symfony 2.0應用程序中,我必須訪問包含用戶數據的第二個數據庫。因此,我有兩個在config _ *。yml中定義的數據庫連接。我對這個問題的方法是非常複製現有EntityUserProvider像這樣註冊爲一個服務於services.yml:如何在Symfony2中使用第二個數據庫進行用戶認證?

services: 
    security.user.provider.concrete.acme_provider: 
     class: Acme\MyappBundle\Security\Core\Authentication\Provider\AcmeUserProvider 
     arguments: [@doctrine.orm.entity_manager, Acme\MyappBundle\Entity\Users, 'username'] 

這工作得很好,到目前爲止,除了它爲我提供了默認的實體管理器。我如何注入使用其他數據庫連接的實體管理器?我想我必須將其設置爲服務,但我不知道如何。

回答

0

如果你想在一個服務使用特定的EntityManager,注入整個學說登記作爲參數,就像這樣:

services: 
security.user.provider.concrete.acme_provider: 
    class: Acme\MyappBundle\Security\Core\Authentication\Provider\AcmeUserProvider 
    arguments: [@doctrine, Acme\MyappBundle\Entity\Users, 'username'] 

然後,在你的服務的構造,影響了EntityManager要作爲使用一類物業:

namespace Acme\MyappBundle\Security\Core\Authentication\Provider; 

use Symfony\Bundle\DoctrineBundle\Registry; 
// .... 

class AcmeUserProvider implements UserProviderInterface 
{ 
    private $em; 
    // ... 

    public function __construct(Registry $doctrine, $class, $property) 
    { 
     $this->em = $doctrine->getEntityManager('your_em'); 
     // .... 
    } 

    // .... 
} 
相關問題