2015-05-18 125 views
0

我使用一个辅助功能切换到用户数据库在我的一些模型的构造函数,像这样:加载默认数据库

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); 
} 

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

function switch_to_default_db(){ 
    $CI =& get_instance(); 

    $CI->load->database('default'); 
    echo $CI->db->database;  //Echoes e.g. "user_db_4" 
} 

有没有什么办法可以访问原始数据库的配置项,而无需再次读取实际配置文件?

回答

0

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

因此,而不是:

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

你可以这样做:

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

然后用$ NEWDB对象用户数据库querys和默认的基本工作将仍在工作如常。

顺便说一句,你可以把配置在database.php中像

$db['user']['hostname'] = 'host'; 
$db['user']['username'] = 'user'; 
$db['user']['password'] = 'pass'; 
$db['user']['database'] = 'db'; 

(以及其他参数)

,然后加载像

$userDb = $this->load->database('user', true); 

分贝(或$ CI,如果你超出范围)