web-dev-qa-db-ja.com

CodeIgniterヘルパー関数はデータベース関数を使用できますか?

私のCodeIgniterコントローラー関数の1つは、その機能の一部として再帰関数を呼び出す必要があります。コントローラークラス内に配置すると、関数呼び出しがチョークし、データベース関数にアクセスできなくなります($this->db->get())クラスの外に置いたら。ヘルパー関数にすることでこの問題を解決できますか?

13
Rorrik

インスタンスを取得できます:

 $CI =& get_instance();

その後、クエリに$CI->dbを使用できるようになります。

35
Svetoslav

ライブラリ、ヘルパーで$ thisを使用し、すべてのメソッドにアクセスする場合:

    $this->ci =& get_instance();
    $this->ci->load->database();

次のこともできます。

    $this->ci->config->item('languages');

または

    $this->ci->load->library('session');
7
Sangar82

ヘルパーで関数を定義できます

if (!function_exists('getRecordOnId'))
{
    function getRecordOnId($table, $where){
        $CI =& get_instance();
        $CI->db->from($table);
        $CI->db->where($where);
        $query = $CI->db->get();
        return $query->row();
    }
}

のようなビューから呼び出すことができます

$recordUser = getRecordOnId('users', ['id' => 5]); //here 5 is user Id which we can get from session or URL.
3
Naveed Ramzan