0

我为我的项目使用了两个数据库。在配置中。.yml 文件

all:
  master:
    class: sfDoctrineDatabase
    param:
      dsn: 'mysql:host=localhost;dbname=livetloc'
      username: root
       password: console
client:
class: sfDoctrineDatabase
param:
  dsn: 'mysql:host=localhost;dbname=testloc'
  username: root
  password: console

然后我生成了架构和模型。现在我需要动态更改数据库连接。如果我在我的项目中编写新代码,我需要在 testloc db 上对其进行测试。之后,我会将其更改为 liveloc db 。这个项目由四个成员使用。我正在向它添加新功能,四个成员同时使用该项目,但我使用“testloc”数据库。其他人正在使用 "Liveloc" db 。在单一环境中为特定登录特定用户更改数据库的解决方案是什么?

4

1 回答 1

0

我在以前的项目中有这个需求,这就是我解决它的方法:

在您的控制器中:

// we get the params in your databases.yml file for your data source "client"
$dbParams = sfContext::getInstance()->getDatabaseManager()->getDatabase('client');

$paramsArray = array(
    $dbParams->getParameter('dsn'), 
    $dbParams->getParameter('username'),
    $dbParams->getParameter('password'),
    'testloc'
);

// setting "false" avoids this new connection to replace your default one
$newConnection = Doctrine_Manager::getInstance()->openConnection($params, 'name_of_connection', false);

$query = "SELECT * FROM table";
$result = $newConnection->fetchAll($query); 

这不是很酷,因为它使用了 symfony 上下文,但这确实有效;)。在测试环境中,我认为这很好。

于 2013-03-29T17:23:22.130 回答