Cakephp为整个项目切换数据库连接

时间:2015-08-10 18:58:55

标签: php cakephp

如何切换整个项目的数据库,如下例所示:

用户1使用数据库test1

用户2使用数据库test2

用户3使用数据库test3

如上所述......来自User的那些ID将来自默认数据库(登录页面)

PS:抱歉我的英文不好,我需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

在database.php中创建多个数据库配置

假设我们有默认,test1,test2,test3配置。

正如您所说的那样,用户数据是默认的db config,我认为您正在使用AUTH COMPONENT进行授权。

现在在AppController中添加以下功能


    public function beforeFilter() {
        //call change db config function on user login and pass which config need to use
        if( $this->Auth->loggedIn() ) {
            //user login
            ///Some logic to select db config according login user.
            $dbConfig = "result of logic which return db config name";
            $this->_userSpecificDbConfig($dbConfig);
            }
    }

    private function _userSpecificDbConfig($dbConfig) {
        //get model name
        $model =  $this->name;
        //set db configuration for user
        switch($dbConfig) {
            case 'test1':
                $this->{$model}->useDbConfig = "test1";
                break;
            case 'test2':
                $this->{$model}->useDbConfig = "test2";
                break;
            case 'test3':
                $this->{$model}->useDbConfig = "test3";
                break;
            default: 
                $this->{$model}->useDbConfig = "default";
        }
    }

试试这段代码。