2015-05-18 174 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,如果你超出範圍)