Ko3:使用模型参数更改数据库配置

时间:2011-01-28 17:18:14

标签: database-connection kohana-3

出于某种原因,当我调用模型时,除默认情况外,我不能使用不同的数据库配置名称。

$carrier = new Model_Carrier('as400');

这只是回到“默认”配置。即使我重命名或删除默认配置,它仍然会尝试转到它。我的database.php文件中有一个“as400”配置。如果我将as400设置为我的默认值它可以工作,但我需要其他模型使用默认值MySQL。 as400不是mysql。这是我写的ODBC驱动程序。

3 个答案:

答案 0 :(得分:1)

来自Kohana documentation

  

对于每个模型,您可以定义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';