如何在先前调用另一个模型时将配置传递给模型?

时间:2014-08-11 00:31:37

标签: php mysql codeigniter model

我加载了我的第一个模型:

$this->load->model('red_comercial');

然后我从中获取数据:

$Sitios = $this->red_comercial->Obtener_Sitios();

它工作正常,但是当我打电话给第二个模型时:

$config['hostname'] = "localhost";
$config['username'] = "root";
$config['password'] = "mipass";
$config['database'] = "midb";
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;

$this->load->model('punto_venta_model','',$config);
$Productos = $this->punto_venta_model->Obtener_Productos();

我收到此错误:

表格'我的第一个DataBaseUse的名称。我的第二个数据库的表格'不存在

错误是它仍然使用我的第一个数据库,我也这样做:

$DB1 = $this->load->database('grupo_uno', TRUE);
$DB2 = $this->load->database('grupo_dos', TRUE); 

但它也不起作用:(

我可以用mysqli_query做到这一点,但你知道......

1 个答案:

答案 0 :(得分:0)

我认为这是因为您无法真正使用多个数据库。

根据我之前提供的答案:Codeigniter - best way to use two different database

像这样更改数据库配置。为每个数据库创建一个单独的条目:

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "user";
$db['default']['password'] = "database";
$db['default']['database'] = "db1";

$db['db1']['hostname'] = "localhost";
$db['db1']['username'] = "root";
$db['db1']['password'] = "mipass";
$db['db1']['database'] = "midb";

$db['db2']['hostname'] = "localhost";
$db['db2']['username'] = "user";
$db['db2']['password'] = "database";
$db['db2']['database'] = "db2";

//.. and so on

现在,在每个模型的构造函数中,执行以下操作:

public function __construct(){
    parent::__construct();
    $this->ci = &get_instance();
    $this->db = $this->ci->load->database(DB_FOR_THIS_MODEL, TRUE); 
}

基本上,您将此 this-> db 变量设置为该模型的相关数据库。 当模型使用默认数据库时,您不需要这样做。