【问题标题】:How to pass Configuration to a Model when another Model has been previously called?当之前调用了另一个模型时,如何将配置传递给模型?
【发布时间】:2014-10-03 18:05:37
【问题描述】:

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

$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();

我收到此错误:

表“我的第一个数据库的名称。我的第二个数据库的表”不存在

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

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

但它也不起作用:(

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

【问题讨论】:

    标签: php mysql codeigniter model


    【解决方案1】:

    我相信这是因为你不能真正使用这样的多个数据库。

    根据我之前在此处提供的答案: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 变量设置为该模型的相关数据库。 当模型使用默认数据库时,您不需要这样做。

    【讨论】:

    • 是的,但是我想动态连接到我的站点生成的多个数据库,所以我无法将它们分配给数据库文件,我还更改了 $db['default'][' pconnect'] 值为 false。总而言之,我的服务器上有一个全局数据库,然后我动态创建一个数据库,在我的全局数据库上有一个名为“站点”的表,记录了我生成的动态数据库的名称,然后我的默认数据库是我的全局数据库,我需要访问我的全局数据库以获取数据库名称,并使用他各自的模型创建到它的新连接。我已经这样做了,但是使用了 mysqli_connect(),失去了模型的好处。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 2022-06-19
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    相关资源
    最近更新 更多