Codeigniter-如何在扩展本机库时使用数据库功能?

时间:2012-08-25 12:35:14

标签: codeigniter codeigniter-routing

我想在扩展库中访问数据库函数。

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();

但它不起作用。

帮助我......

提前致谢, 洛根

2 个答案:

答案 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();

编辑:这只适用于库,不适用于核心类。