One of my CodeIgniter Controller functions needs to call a recursive function as part of its functionality. The function call chokes if I put it inside the controller class, and it can't access database functions ($this->db->get())
if I put it outside the class. Would making it a helper function fix this problem?
Asked
Active
Viewed 2.9k times
15
-
Please post your controller code. – Marc Audet Apr 08 '13 at 20:27
-
Why not just use a model? That's where your DB interactions are supposed to go anyway. – Aken Roberts Apr 08 '13 at 22:32
4 Answers
38
You can get instance:
$CI =& get_instance();
After that you will be able to use $CI->db
for queries..
-
Brilliant, after a little reading that is exactly what I'm looking for. – Rorrik Apr 08 '13 at 20:44
-
-
@svetoslav but is correct doing so in a MVC point of view? just wondering, im new to this – gepex Apr 07 '20 at 01:34
-
@gepex this is answer made 7 years ago. Normally it is not what we usually see today and we can say that it is against MVC. However this is the way it was working at CodeIgniter until v4, solution written probably about 10 years ago.. (or even more) .. – Svetoslav Apr 07 '20 at 05:13
8
If you want to use $this in libraries, helpers, and access all the methods:
$this->ci =& get_instance();
$this->ci->load->database();
You can do also:
$this->ci->config->item('languages');
or
$this->ci->load->library('session');

Sangar82
- 5,070
- 1
- 35
- 52
-
That's a great thread, explains how to use get_instance() once you know you want to use get_instance(). – Rorrik Apr 09 '13 at 14:58
6
We can define a function in helper
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();
}
}
and we can call from view like
$recordUser = getRecordOnId('users', ['id' => 5]); //here 5 is user Id which we can get from session or URL.

Naveed Ramzan
- 3,565
- 3
- 25
- 30
-2
//Select Data:
$this->db->select(‘fieldname seperated by commas’);
$this->db->from(‘table’);
$query = $this->db->get();
$results=$query->result() ;
//Joins:
$this->db->select(‘*’);
$this->db->from(‘table1′);
$this->db->join(‘table2′, ‘table2.id = table1.id’);
$query = $this->db->get();
We may get it from http://skillrow.com/codeignitor-database-functions/

kamal
- 5
- 1