cakephp动态数据库连接

cakephp动态数据库连接,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,我有一个应用程序,每个订阅者都在自己的url中获得自己的“应用程序”文件夹,例如 www.domain.com/1234 subscriber1 www.domain.com/2345 subscriber2 现在db连接在config/database.php中的一个类中配置。我希望能够更改基于url使用的数据库(例如/1234=db_1234) 我将如何实现这一点 谢谢 顺便说一句,我使用的是CakePHP2.0,我以前的解决方案是一堆垃圾。所以我想从另一个角度来解决这个问题。我的数据库配

我有一个应用程序,每个订阅者都在自己的url中获得自己的“应用程序”文件夹,例如

www.domain.com/1234 subscriber1
www.domain.com/2345 subscriber2
现在db连接在config/database.php中的一个类中配置。我希望能够更改基于url使用的数据库(例如/1234=db_1234)

我将如何实现这一点

谢谢


顺便说一句,我使用的是CakePHP2.0,我以前的解决方案是一堆垃圾。所以我想从另一个角度来解决这个问题。我的数据库配置类(/app/CONFIG/DATABASE.php)现在看起来如下所示:
class DATABASE_CONFIG {

  public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => '127.0.0.1',
    'login' => 'xxxx',
    'password' => 'xxxx',
    'database' => 'xxxx',
    'prefix' => '',
    'encoding' => 'utf8',
  );

  public $site_one = array(
    'datasource' => 'Database/Mysql',
    'host' => '127.0.0.1',
    // ...  
  );

  public $site_two = array(
    'datasource' => 'Database/Mysql',
    'host' => '127.0.0.1',
    // ...
  );

  public function __construct()
  {
    if (strpos(env('HTTP_HOST'), 'site_one') !== false) {      

      // use site_one database config
      $this->default = $this->site_one;

    // elseif site_two
    } elseif (strpos(env('HTTP_HOST'), 'site_two') !== false) {

      // use site_two database config
      $this->default = $this->site_two;
    }
  }

}
当加载蛋糕时,现在会自动调用构造,这将根据主机设置“默认”数据库连接。

啊,我现在知道了

我认为数据库_CONFIG是静态调用的,所以没有考虑使用该构造

www.domain.com/12345678

function __construct() {
    // get folder
    if(substr(php_sapi_name(), 0, 3) == "cli") {
        $j = explode("/", $_SERVER['PWD']);
        $this->default['database'] = "sa_".$j[count($j)-1];
    } else {
        $j = explode("/", $_SERVER['REQUEST_URI']);
        $this->default['database'] = "sa_".$j[1];
    }
}

但是命令行烘焙必须在文件夹中完成,例如12345678/

可能会帮助您完全更新我的答案,尝试不同的方法。希望能有所帮助。这正是我想要的,但您仍然在配置文件中硬编码连接变量。基于文件夹名加载页面时,能否动态设置主机?@khany什么主机?数据库主机?您可以更改_construct()中的逻辑,并根据需要执行任何操作。