我想在扩展库中访问数据库函数。
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();
但它不起作用。
帮助我......
提前致谢, 洛根 的
答案 0 :(得分:3)
不幸的是你无法做到这一点,因为框架的加载顺序,以及路由信息用于决定要加载的控制器类,以及get_instance()
的返回值是该控制器实例。 / p>
您可以通过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数据库配置文件并使用它的值而不会出现问题(注意环境)。
答案 1 :(得分:1)
只需从实例($CI->load->database();
)
$CI =& get_instance();
$CI->load->database();
$query=$CI->db->get('custome_routes');
$custom_routes=$query->result_array();
编辑:这只适用于库,不适用于核心类。