使用Codeigniter 3.0.6Codeigniter:使用數據庫存儲多個用戶的數據庫名
直到現在我一直在使用Codeigniter的標準設置。我有一個數據庫,所有連接都很好。我遇到的問題是我想添加一個'global_accounts'數據庫,根據當前登錄的用戶將從中選擇要加載的數據庫。
Global_Accounts
--------------------------------------------------------
user | coolUser | user2
pass | coolPassword | passy
url | coolestsite.mysite.com | u2.mysite.com
database_name | coolestsite_application_db | u2_application_db
就我而言,應用程序數據/模式並不重要。我想要的(並且將要建立的,但是在這個問題的範圍之外)是當用戶註冊時,他們將填寫用戶,傳遞和url,並且db_name將被自動創建。然後該腳本將創建一個具有該名稱的新數據庫,爲用戶創建應用程序數據庫的空白副本。
所以現在,我們正在編碼這個硬編碼,所以我們可以假設它的工作完美。
我要的是裏面笨的database.php中的文件:
$db['default'] = array(
'dsn' => '',
'hostname' => 'mysite.com',
'username' => 'root',
'password' => 'pass',
'database' => 'coolsite_application_db'
...etc
);
而不是硬編碼這個文件,我希望能夠做這樣的事情:
$db['global'] = array(
'dsn' => '',
'hostname' => 'mysite.com',
'username' => 'root',
'password' => 'pass',
'database' => 'global_accounts'
...
);
$db['default'] = array(
'dsn' => '',
'hostname' => 'mysite.com',
'username' => 'root',
'password' => 'pass',
'database' => $this->db['global']->get_db_name($loggedInUserId);
...etc
);
希望這使得意義 - 我需要根據登錄的用戶獲取數據庫名稱。顯然,我需要建立一個模型或只是一個函數來抓住它,但問題是在哪裏?我是否添加模型,連接到全局數據庫,然後在數據庫配置中加載模型?還有其他更簡單更高效的方式來做到這一點嗎? Codeigniter核心文件能夠從codeigniter配置文件中調用嗎?
這就是我正在做的,但問題是,我想它會自動加載正確的用戶數據庫,具體取決於用戶/網址。將一個助手添加到database.php(使用get_instance())會導致無限遞歸。 –
更改'$ db ['default'] ['autoinit'] = TRUE;'進入FALSE – reignsly