Вы можете сделать это, создав базовую модель, которая будет расширена вашими моделями, требующими проверки базы данных.
Я упростил код проверки и загрузки.Простой троичный определяет строку для использования и сохраняет ее в переменной $dbname
.Эта переменная используется для загрузки базы данных, т.е. $this->load->database($dbname);
.
Не думаю, что вам нужен второй аргумент для load::database()
, что означает, что вам не нужно явно указывать $this->db
.Если я не прав, используйте
$this->db = $this->load->database($dbname, TRUE);
Ниже приведена "базовая" модель.Префикс имени файла определяется в config.php с параметром $config['subclass_prefix'] = 'MY_';
Настройте имя файла и класса вашей базовой модели в соответствии с используемым вами «subclass_prefix».
/ application / core / MY_Model.php
<?php
class MY_Model extends CI_Model
{
public function __construct()
{
parent::__construct();
$dbname = $this->session->dbname == 'db1' ? 'db1' : 'db2';
$this->load->database($dbname);
}
}
Используйте вышеизложенное для создания других моделей, таких как ...
class News_model extends MY_Model
{
public function get_news($slug = FALSE)
{
if ($slug === FALSE)
{
$query = $this->db->get('news');
return $query->result_array();
}
$query = $this->db->get_where('news', array('slug' => $slug));
return $query->row_array();
}
}