2

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

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

但它不起作用。

帮我....

提前致谢, 洛根

4

2 回答 2

3

不幸的是,您不能这样做,因为框架的加载顺序,并且由于路由信息用于决定要加载的控制器类,并且返回值get_instance()是该控制器实例。

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 数据库配置文件并毫无问题地使用它的值(注意环境)。

于 2012-08-25T13:50:03.510 回答
1

$CI->load->database();只需从实例 ( )加载数据库

$CI =& get_instance();
$CI->load->database();

$query=$CI->db->get('custome_routes');
$custom_routes=$query->result_array();

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

于 2012-08-25T15:29:01.457 回答