私のCodeIgniterコントローラー関数の1つは、その機能の一部として再帰関数を呼び出す必要があります。コントローラークラス内に配置すると、関数呼び出しがチョークし、データベース関数にアクセスできなくなります($this->db->get())
クラスの外に置いたら。ヘルパー関数にすることでこの問題を解決できますか?
インスタンスを取得できます:
$CI =& get_instance();
その後、クエリに$CI->db
を使用できるようになります。
ライブラリ、ヘルパーで$ thisを使用し、すべてのメソッドにアクセスする場合:
$this->ci =& get_instance();
$this->ci->load->database();
次のこともできます。
$this->ci->config->item('languages');
または
$this->ci->load->library('session');
ヘルパーで関数を定義できます
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.