我目前在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();
等等