database.php中根據登錄用戶的憑據動態切換到不同的數據庫?
<?php
class Database extends CI_Controller {
public $branch_db;
function __construct($company_name, $branch_name) {
parent::__construct();
$branch_db = $this->load->database($company_name.'_db_'.$branch_name);
}
}
?>
Account_model.php
protected function verifyLogin($username, $password) {
$this->db->trans_start();
$sql = "SELECT password, company_id, branch_id
FROM account
WHERE username = {$username}"; //Prepare statement
$query = $this->db->query($sql);
$result_num = $query->num_rows();
if ($result_num == 1) {
$first_row = $query->row();
$stored_password = $first_row->password;
if (password_verify($password, $stored_password)) {
//Successful login
//Get company name
//Get branch name
//Set database
//Pass company_name, branch_name
//All models must be able to access the dynamically loaded database
}
}
$this->db->trans_complete();
}
有可以訪問多個數據庫。每個分支都有一個動態創建的數據庫。每個分支都有一個帳戶。登錄賬戶時,將訪問與該賬戶相關的數據庫。該數據庫將被用於整個會話,直到用戶註銷。
我有一個主數據庫,其中存儲有效用戶名/密碼組合的主列表。我在config
文件夾中的database.php
中聲明。但是在用戶登錄後,我需要切換到與該用戶帳戶相關的數據庫,以便他們可以訪問他們的數據。
我怎樣才能使用這個控制器爲我的模型,使他們都訪問相同的數據庫(無需重複$this->load->database()
反覆)?
手段?你想在模型的每個函數上加載數據庫? –
是的,我想呢?就像,我有點想讓這個db等價於'$ this-> db',讓它可以全局訪問所有模型(每個數據庫都有相同的表結構)@JayminsFakeAccount – herondale