在Codeigniter中加载默认数据库



我正在使用一个辅助函数来切换到我的一些模型构造器中的用户数据库,如:

public function __construct(){
    parent::__construct();
    $this->load->helper('general');
    switch_to_user_db();
}

我的general_helper这样做:

function switch_to_user_db($userID = NULL){
    $CI =& get_instance();
    $userID = ($userID !== NULL) ? $userID : $CI->user->ID;
    $dbParams = array(
        'hostname' => 'localhost',
        'username' => 'dbUserName',
        'password' => 'dbPassword',
        'database' => 'user_db_'.$userID,
        'dbdriver' => 'mysql'
    );
    $CI->load->database($dbParams, FALSE, TRUE);
}

我希望能够切换回默认的DB,当我完成与另一个辅助函数的用户DB,但我没有任何运气访问默认的数据库配置项。

function switch_to_default_db(){
    $CI =& get_instance();
    $CI->load->database('default');
    echo $CI->db->database;      //Echoes e.g. "user_db_4"
}

是否有任何方法可以访问原始的db配置项,而无需再次读取实际的配置文件?

如果您将load函数的第二个参数设置为TRUE,它将返回具有所提供设置的DB对象的实例。

所以,而不是:

$CI->load->database('usrTable');

你可以这样做:

$newDb = $CI->load->database('usrTable',TRUE);

然后使用$newDb对象进行用户数据库查询,默认基础仍然会像往常一样工作。

顺便说一下,您可以将配置放在database.php中,如
$db['user']['hostname'] = 'host';
$db['user']['username'] = 'user';
$db['user']['password'] = 'pass';
$db['user']['database'] = 'db';

(及其他参数)

然后像

一样加载db
$userDb = $this->load->database('user', true); 

相关内容

  • 没有找到相关文章

最新更新