首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony原理动态配置

Symfony原理动态配置
EN

Stack Overflow用户
提问于 2016-08-29 20:46:52
回答 1查看 432关注 0票数 1

目前,我在Symfony 3项目中遇到了doctrine的问题。

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

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

2-解密密码

3-配置/原理连接

我不知道我应该在config.yml上工作还是使用其他方法?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-29 21:19:26

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

首先,在config.yml中定义一个空连接

代码语言:javascript
复制
dynamic_con:
    dbname:   ~
    user:     ~
    password: ~
    host:     ~
    charset:  UTF8

现在,我已经编写了一个PostLoginController,它总是在成功登录后被调用。

在那里,我获得了连接数据,并用它调用了我的DynamicDatabaseService

我的DynamicDatabaseService有以下功能,它将构建我与所提供的数据的连接。

代码语言:javascript
复制
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,因此

代码语言:javascript
复制
$dynamicCon->prepare("SELECT * FROM USERS WHERE id = :id"); 
$dynamicCon->bindValue(":id", $id);
$dynmicCon->execute();

诸若此类

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39206719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档