2011-10-01 98 views
1

我在Codeigniter有多個數據庫連接有問題。在我的database.php我配置了兩個數據庫。Codeigniter - 多個數據庫連接

$active_group = 'cms'; 
$active_record = FALSE; 
    $db['cms']['hostname'] = 'localhost'; 
    $db['cms']['username'] = 'yoloo_cms'; 
    $db['cms']['password'] = 'password'; 
    $db['cms']['database'] = 'yoloo_cms'; 
    $db['cms']['dbdriver'] = 'mysql'; 
    $db['cms']['dbprefix'] = ''; 
    $db['cms']['pconnect'] = TRUE; 
    $db['cms']['db_debug'] = TRUE; 
    $db['cms']['cache_on'] = FALSE; 
    $db['cms']['cachedir'] = ''; 
    $db['cms']['char_set'] = 'utf8'; 
    $db['cms']['dbcollat'] = 'utf8_general_ci'; 
    $db['cms']['swap_pre'] = ''; 
    $db['cms']['autoinit'] = TRUE; 
    $db['cms']['stricton'] = FALSE; 

    $db['hazeleger']['hostname'] = 'localhost'; 
    $db['hazeleger']['username'] = 'yoloo_websites'; 
    $db['hazeleger']['password'] = 'password2'; 
    $db['hazeleger']['database'] = 'yoloo_hazeleger'; 
    $db['hazeleger']['dbdriver'] = 'mysql'; 
    $db['hazeleger']['dbprefix'] = ''; 
    $db['hazeleger']['pconnect'] = TRUE; 
    $db['hazeleger']['db_debug'] = TRUE; 
    $db['hazeleger']['cache_on'] = FALSE; 
    $db['hazeleger']['cachedir'] = ''; 
    $db['hazeleger']['char_set'] = 'utf8'; 
    $db['hazeleger']['dbcollat'] = 'utf8_general_ci'; 
    $db['hazeleger']['swap_pre'] = ''; 
    $db['hazeleger']['autoinit'] = TRUE; 
    $db['hazeleger']['stricton'] = FALSE; 

在我的模型我用這個當我要連接到其他數據庫比通常一個:

function __construct() 
{ 
    parent::__construct(); 
    $this->load->database('hazeleger',TRUE); 
} 

但在所有的時間笨連接到CMS。當我刪除

$active_group = 'cms'; 
$active_record = FALSE; 

Codeingiter出現錯誤。當我試過這個

function __construct() 
{ 
    parent::__construct(); 
    $db2 = $this->load->database('hazeleger',TRUE); 
} 

function test() 
{ 
     $query = "SELECT * FROM cms_modules"; 
     $result = $db2->db->query($query); 
     return $db2->result(); 
} 

它給出了一個錯誤。 Variabele db2不存在。 我只想在每個模型上選擇我想連接的數據庫。 但是沒有工作。有人知道,我如何在模型上使用不同的數據庫 。

非常感謝!

回答

5

您必須將變量$ db2另存爲類字段。您可以訪問$ this-> db2 ...

+0

它的作品!非常感謝你! – JelleP

+0

沒問題(:如果你想要你可以標記我的答案爲「正確」。 – MasterCassim

1

發生這種情況是因爲您最有可能在/application/config/autoload.php 中設置了自動加載/創建數據庫庫。

打開autoload.php,並尋找這一行:從陣列

$autoload['libraries'] = array('database'); 

刪除 '數據庫',然後保存。現在它應該按照預期在您的控制器中工作。

+0

它的工作原理!!非常感謝! – JelleP

+0

沒問題。但現在哪一個是正確的? – CarstenSchmitz

+1

@JelleP:我認爲你應該開始[接受答案](http://meta.stackexchange.com/q/5234/147909)。這將有助於使這個網站的工作;)謝謝! – hakre

1

爲今後旅客參考,負載將沿着這些路線:

$this->db2 = $this->load->database('hazeleger',true); 
1

你必須改變DB2類

$query = "SELECT * FROM cms_modules"; 
    $result = $this->db2->query($query); 
    return result();