2016-08-29 10 views
1

私は現在Symfony 3プロジェクトでdoctrine connexionに問題があります。ここSymfony Doctrine Dynamic Configuration

私が実装する必要があり、データベースへの接続図である:

1 - サーバーを含む外部データベース上の要求、ログインおよびアプリケーションデータベースのパスワード

2 - 復号化パスワード

3 - 構成/教義の接続

config.ymlや別の方法で作業する必要があるかどうかわかりませんか?

この場合、どのような方法をお勧めしますか?

は、ここに私の作業溶液

答えて

0
私は私のプロジェクトで似た何かをやった

だ :

まず、今すぐあなたのconfig.yml

dynamic_con: 
    dbname: ~ 
    user:  ~ 
    password: ~ 
    host:  ~ 
    charset: UTF8 

に空の接続を定義し、私が書きましたPostLoginControllerは、ログインに成功した後も常に呼び出されます。

ここに接続データがあり、DynamicDatabaseServiceと呼んでいます。

私のDynamicDatabaseServiceには、提供されたデータとの接続を構築する次の機能があります。

public function getDynamicDatabase() 
{ 
    // $this->doctrine was given to the service in the constructor beforehand 
    $dynamicCon = $this->doctrine->getConnection('dynamic_con'); 
    $refCon = new \ReflectionObject($dynamicCon); 
    $refParams = $refCon->getProperty('_params'); 
    $refParams->setAccessible('public'); 
    if($params == false){ 
     $defaultCon = $this->doctrine->getConnection('default'); 
     $params = $refParams->getValue($dynamicCon); 

     // You need to inject your Params to the function or implement some further logic to receive your connection parameters to use them here. 
     $params['dbname'] = $dbName; 
     $params['user'] = $dbUser; 
     $params['password'] = $dbPass; 
     $params['host'] = $dbHost; 
     } 

    $refParams->setValue($dynamicCon,$params); 
    $refParams->setAccessible('private'); 

    return $dynamicCon; 
} 

さて、あなたはそう、通常のPDO接続など$dynamicConにご返信用

+0

おかげで

$dynamicCon->prepare("SELECT * FROM USERS WHERE id = :id"); $dynamicCon->bindValue(":id", $id); $dynmicCon->execute(); 

そしてそうに作業することができます! – Geo

関連する問題