如何更改Kohana 3中使用的默认数据库?

时间:2010-06-28 01:46:04

标签: php database kohana kohana-3

我在application/config/database.php中设置了一个名为staff的新数据库配置。

然后我创建了一个新的基本模型,并添加了一个受保护的$db变量,并将其设置在$this->db = Database::instance('staff')的构造函数中。

当我尝试将Db::query(Database::SELECT, $query)替换为$this->db->query(Database::SELECT, $query)时,它会以...

失败
  

缺少参数3   Kohana_Database_MySQL ::查询()

我遗漏的第三个参数是$as_object,在使用静态query()方法时,是必需的。 我的猜测是静态方法为我传递了这个。它实际上返回new Database_Query($type, $sql)

我认为我做错了。

有没有办法重载我通常在备用数据库配置的不同类中使用的静态Db::query()

由于

1 个答案:

答案 0 :(得分:5)

  

然后我创建了一个新的基本模型,并添加了一个受保护的$ db变量,并在构造函数中将其设置为$ this-> db = Database :: instance('staff')。

您已在控制器中加载了数据库。

  

当我尝试用$ this-> db->查询(Database :: SELECT,$ query)替换Db :: query(Database :: SELECT,$ query)时,它失败了...

现在您正在创建一个查询。

接下来,您需要使用您创建的数据库执行查询:

$result = $query->execute($this->db);

在Kohana v3中,查询和数据库是分开的,因此您必须告诉查询要执行哪个数据库,而不是告诉数据库执行查询。查询将自行编译,然后调用$db->query($sql)本身。

您还可以快速加载数据库:

$query->execute('staff');

将在“员工”数据库上执行。