我想访问扩展库中的数据库函数。
class My_Router extends CI_Router {
public function __construct()
{
parent::__construct();
}
function _set_routing()
{
.....
....
$query=$this->db->get('custome_routes');
$custom_routes=$query->result_array();
....
}
}
我也尝试过以下
$CI =& get_instance();
$query=$CI->db->get('custome_routes');
$custom_routes=$query->result_array();
但是这不起作用。
帮帮我......
提前致谢, 洛根
最佳答案
不幸的是你不能这样做,因为框架的加载顺序,并且路由信息用于决定加载哪个 Controller 类,而 get_instance()
的返回值是该 Controller 实例。
您可以尝试通过 require
调用 system/DB.php 来使用 CI 的内置类,并使用 DB()
函数来获取 db 类的实例。
public function _set_routing(){
require_once BASEPATH.'database/DB.php';
$db = DB('default', true); // you can set the database.php config's group, or a full DSN string here
$custom_routes = $db->get('custome_routes')->result_array();
}
或者您可以在您的子类中创建一个独立于 CI 的数据库连接,对于这个“获取完整表”查询,这应该不难。您应该能够包含 CI 数据库配置文件并毫无问题地使用它的值(注意环境)。
关于Codeigniter-如何在扩展原生库的同时使用数据库功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12122018/