Я хочу переключить свою базу данных codeigniter на время выполнения. Моя база данных по умолчанию будет тщательно работать на странице, но когда мне нужно будет переключиться на другую базу данных в зависимости от сценария или требований, я могу это сделать. Функция общая модель будет работать для всех различных баз данных. Итак, я хочу использовать одну и ту же модель и одну и ту же функцию для соединения с несколькими базами данных, используя динамический селектор, без использования сеанса или без передачи переменной функции
Чтобы достичь этого, я установил имя в cofig, и когда я вызываю свою модель, я устанавливал требуемое имя базы данных в контроллере перед вызовом модели, а затем я пытался получить имя в модели, которая установлена в контроллере. Но, к сожалению, я не получаю имя от контроллера к модели.
Файл конфигурации базы данных -
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'pass'
'database' => 'db1'
.......
);
$db['anotherDB'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'pass'
'database' => 'db2'
.......
);
Контроллер -
$this->config->set_item('active_db', 'anotherDB');
$sql = 'select * from user';
$anotherDB_record = $this->model->customQuery($sql);
print_r($anotherDB_record);
$this->config->set_item('active_db', 'default');
$sql = 'select * from customer';
$default_record = $this->model->customQuery($sql);
print_r($default_record);
Режим -
protected $database;
function __construct() {
parent::__construct();
$oDB = $this->config->item('active_db');
$this->database = $this->load->database($oDB, TRUE);
}
function customQuery($sql){
$query = $this->database->query( $sql );
return $query->result();
}
Так я пытался переключить свою базу данных. Если у вас, ребята, есть какое-либо другое лучшее решение для переключения нескольких баз данных, пожалуйста, не стесняйтесь предлагать мне.