【发布时间】:2014-08-23 00:16:44
【问题描述】:
mi 文件 config.php 是:
$active_group = 'default';
$active_record = TRUE;
db master 是唯一的数据库
$db['master']['hostname'] = "localhost";
$db['master']['username'] = "root";
$db['master']['password'] = "";
$db['master']['database'] = "admin_nb";
$db['master']['dbdriver'] = "mysqli";
$db['master']['dbprefix'] = '';
$db['master']['pconnect'] = FALSE;
$db['master']['db_debug'] = TRUE;
$db['master']['cache_on'] = FALSE;
$db['master']['cachedir'] = "";
$db['master']['char_set'] = "utf8";
$db['master']['dbcollat'] = "utf8_general_ci";
db 应用是动态数据库
$db['app']['hostname'] = 'localhost';
$db['app']['username'] = 'root';
$db['app']['password'] = '';
$db['app']['database'] = $my_bd_dynamic;
$db['app']['dbdriver'] = 'mysqli';
$db['app']['dbprefix'] = '';
$db['app']['pconnect'] = TRUE;
$db['app']['db_debug'] = TRUE;
$db['app']['cache_on'] = FALSE;
$db['app']['cachedir'] = '';
$db['app']['char_set'] = 'utf8';
$db['app']['dbcollat'] = 'utf8_general_ci';
$db['app']['swap_pre'] = '';
$db['app']['autoinit'] = TRUE;
$db['app']['stricton'] = FALSE;
根据主数据库中的登录,我得到数据库的名称,我必须将值分配给变量 $ My_bd_dynamic
“bd_dynamic's”不能手动写,因为很多数据库
我在控制器中对此进行了测试:
class Trabajador extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->driver('cache');
$this->load->helper(array('form', 'url','otros_helper','fechas_helper','imagen_helper'));
// Se le asigna a la informacion a la variable $user.
$this->abbost_hotel = @$this->session->userdata('sess_abbost_hotel_'.substr(base_url(),-8,7));
$my_bd_dynamic= $this->abbost_hotel->nombre_bd; /*var session*/
$config_app['hostname'] = 'localhost';
$config_app['username'] = 'root';
$config_app['password'] = '';
$config_app['database'] = $my_bd_dynamic;
$config_app['dbdriver'] = 'mysqli';
$config_app['dbprefix'] = '';
$config_app['pconnect'] = FALSE;
$config_app['db_debug'] = TRUE;
$this->load->model('model_tareas','',$config_app);
}
public function index()
{
//...
}
而且,我的 Model_tarea 是: ...
public function m_cargar_tareas_activas()
{
$estado = 1;
$this->db->select("colum1,colum2");
$this->db->from('tarea');
$query = $this->db->get();
return $query->result_array();
}
... 但是,读取数据库 master 而不是读取数据库 $my_bd_dynamic。 请帮忙, 有没有办法这样操作?
$this->set->database = $my_dinamic_bd;
我必须更改codeigniter核心的哪一部分来解决问题?
【问题讨论】:
标签: database codeigniter dynamic switch-statement multiple-databases