Symfony Doctrine动态配置


Symfony Doctrine Dynamic Configuration

我目前在Symfony 3项目中有一个学说连接问题。

下面是我应该实现的到数据库的连接图:

1 -包含服务器、登录名和应用程序数据库密码的外部数据库请求

2 -解密密码

3 -配置/原则连接

我不知道我是否应该在config.yml上工作,还是用另一种方法?

在这种情况下推荐的方法是什么

我在我的一个项目中做过类似的事情,下面是我的工作解决方案:

首先,在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;
}

现在,您可以使用$dynamicCon作为一个正常的PDO连接,因此

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

等等