如何更改 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::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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您已在控制器中加载数据库。
现在您正在创建一个询问。
接下来,您需要使用您创建的数据库执行查询:
在 Kohana v3 中,查询和数据库是分离的,因此您必须告诉查询在哪个数据库上执行,而不是告诉数据库执行查询。查询将自行编译,然后调用 $db->query($sql) 本身。
您还可以快捷地加载数据库:
它将在“staff”数据库上执行。
You have loaded a database in your controller.
Now you are creating a query.
Next, you need to execute the query using the database you have created:
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:
Which will execute on the "staff" database.