目前,我在Symfony 3项目中遇到了doctrine的问题。
下面是我应该实现的数据库连接图:
1-请求外部数据库,其中包含服务器、登录名和应用程序数据库密码
2-解密密码
3-配置/原理连接
我不知道我应该在config.yml上工作还是使用其他方法?
在这种情况下,推荐的方法是什么?
发布于 2016-08-29 21:19:26
我在我的一个项目中做了类似的事情,这是我的工作解决方案:
首先,在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,因此
$dynamicCon->prepare("SELECT * FROM USERS WHERE id = :id");
$dynamicCon->bindValue(":id", $id);
$dynmicCon->execute();诸若此类
https://stackoverflow.com/questions/39206719
复制相似问题