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

发布于 2024-09-07 05:21:28 字数 707 浏览 6 评论 0原文

我在 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::query()

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

我想我做错了。

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

谢谢

I've set up a new database config in application/config/database.php called staff.

I've then made a new base model, and added a protected $db variable and set it in the constructor to $this->db = Database::instance('staff').

When I try and replace Db::query(Database::SELECT, $query) with $this->db->query(Database::SELECT, $query), it fails with...

Missing argument 3 for
Kohana_Database_MySQL::query()

The 3rd argument I am missing is $as_object, which is not required when using the static query() method. My guess is the static method passes this in for me. It actually returns new Database_Query($type, $sql).

I think I am doing it wrong.

Is there a way to overload the static Db::query() I usually use in different classes with the alternate database configuration?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一个人的夜不怕黑 2024-09-14 05:21:28

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

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

当我尝试将 Db::query(Database::SELECT, $query) 替换为 $this->db->query(Database::SELECT, $query) 时,它失败并显示...

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

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

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

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

您还可以快捷地加载数据库:

$query->execute('staff');

它将在“staff”数据库上执行。

I've then made a new base model, and added a protected $db variable and set it in the constructor to $this->db = Database::instance('staff').

You have loaded a database in your controller.

When I try and replace Db::query(Database::SELECT, $query) with $this->db->query(Database::SELECT, $query), it fails with...

Now you are creating a query.

Next, you need to execute the query using the database you have created:

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

In Kohana v3, queries and databases are separated, so you have to tell the query which database to execute on, rather than telling the database to execute a query. The query will compile itself, then call $db->query($sql) itself.

You can also shortcut around loading the database:

$query->execute('staff');

Which will execute on the "staff" database.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文