可变数据库设置Cakephp

时间:2012-05-31 10:51:03

标签: cakephp

我正在寻找一种在Cakephp中创建变量数据库的方法。 我正在创建一个网站,数据库设置(用户,通行证,数据库)取决于登录用户。数据库设置来自另一个数据库。 提前谢谢,

亚伦

- ANSWER

感谢您的快速回复。 我知道如何在数据库之间切换,但数据库设置必须是可变的。 实施例

   $db = $this->DB_SET['DB_SET']['db']; //from model DB_SET the database 
    $db_login= $this->DB_SET['DB_SET']['login'];
    $db_host= $this->DB_SET['DB_SET']['host'];
    $db_pass= $this->DB_SET['DB_SET']['pass'];
    var $db2 = array(
            'driver' => 'mysql',
            'persistent' => false,
            'host' => $db_host,
            'login' => $db_login,
            'password' => $db_pass,
            'database' => $db,
            'prefix' => '',
            'encoding' => 'UTF8',
            'port' => '',
        );

1 个答案:

答案 0 :(得分:2)

如果您想动态创建数据库连接,可能需要使用ConnectionManager::create()

// get logged in user's id and create a connection for them
$id = $this->Auth->user('id');
ConnectionManager::create("user_$id_db", array(
  'driver' => 'mysql',
  'persistent' => false,
  'host' => $db_host,
  'login' => $db_login,
  'password' => $db_pass,
  'database' => $db,
  'prefix' => '',
  'encoding' => 'UTF8',
  'port' => '',
));

然后将模型设置为在准备就绪时使用它。

// get logged in user's id and use their connection
$id = $this->Auth->user('id');
$this->Model->setDataSource("user_$id_db");