2

application/config/database.php我已经在调用中设置了一个新的数据库配置staff

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

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

Kohana_Database_MySQL::query() 缺少参数 3

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

我想我做错了。

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

谢谢

4

1 回答 1

5

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

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

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

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

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

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

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

您还可以使用快捷方式加载数据库:

$query->execute('staff');

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

于 2010-06-28T03:19:52.553 回答