कोडनिर्देशक 3.0 के बाद से क्वेरी बिल्डर वर्ग क्वेरी ग्रुपिंग का समर्थन करता है।
डॉक्स से:
$this->db->select('*')->from('my_table')
->group_start()
->where('a', 'a')
->or_group_start()
->where('b', 'b')
->where('c', 'c')
->group_end()
->group_end()
->where('d', 'd')
->get();
// Generates:
// SELECT * FROM (`my_table`) WHERE ( `a` = 'a' OR ( `b` = 'b' AND `c` = 'c' ) ) AND `d` = 'd'
संपादित करें: आपके उदाहरण में आप उपयोग करेंगे:
$this->db->select('message, created')->from('logs')
->where('username', 'user')
->group_start()
->where('created >', '1487695796')
->where('created <', '1487782196')
->group_end()
->group_start()
->where('message', 'login failure')
->or_where('message', 'login success')
->or_where('message', 'log out')
->group_end()
->order_by('created', 'ASC')
->get();
या
$this->db->select('message, created')
->group_start()
->where('created >', '1487695796')
->where('created <', '1487782196')
->group_end()
->group_start()
->where('message', 'login failure')
->or_where('message', 'login success')
->or_where('message', 'log out')
->group_end()
->order_by('created', 'ASC')
->get_where('logs', array('username' => 'user') );
// both generate:
//SELECT `message`, `created`
//FROM `logs`
//WHERE `username` = 'user'
//AND ( `created` > '1487695796' AND `created` < '1487782196' )
//AND ( `message` = 'login failure' OR `message` = 'login success' OR `message` = 'log out' )
//ORDER BY `created` ASC
यह जांचने के लिए कि क्या कोडनिर्देशक द्वारा उत्पन्न क्वेरी आपके SQL से मेल खाती है, आप इसका उपयोग कर सकते हैं:
echo $this->db->last_query(); // echos last query string