出于某种原因,当我调用模型时,除默认情况外,我不能使用不同的数据库配置名称。
$carrier = new Model_Carrier('as400');
这只是回到“默认”配置。即使我重命名或删除默认配置,它仍然会尝试转到它。我的database.php文件中有一个“as400”配置。如果我将as400设置为我的默认值它可以工作,但我需要其他模型使用默认值MySQL。 as400不是mysql。这是我写的ODBC驱动程序。
答案 0 :(得分:1)
对于每个模型,您可以定义ORM将在哪个数据库配置上运行查询。如果覆盖模型中的$ _db变量,ORM将连接到该数据库。
在您的情况下,您可以在模型中使用:
protected $_db = 'as400';
修改强> 请尝试使用此代码:
$carrier = Model::factory('carrier', 'as400');
答案 1 :(得分:0)
当我运行查询时,我不得不将数据库配置名称放在execute参数中。我不明白为什么它不会通过我在查询中定义的数据库。
$result = DB::query(Database::SELECT, $sql)
->param(':search', strtoupper($search).'%')
->as_object()
->execute($this->_db);
答案 2 :(得分:0)
对于仍在从ORM模型中查看此问题的任何人;差异数据库配置的变量 $ _ db_group
所以你会有
$_db_group = 'as400';