хотя на этот вопрос уже есть ответ, который я мог бы добавить -
вам никогда не следует использовать неэкранированные данные в ваших запросах, потому что вы полностью открыты для SQL-инъекций - пожалуйста, прочитайте Документация QueryBuilder и Документация запросов внимательно - особенно часть с экранированием.
, так сказать, следующий код больше подходит для вашего случая
$query = $this->db
->group_start()
->where('delivery_date >=', $from)
->where('delivery_date <=', $to)
->group_end()
->group_start()
->group_start()
->where('order_date >=', $odfrom)
->where('order_date <=', $odto)
->group_end()
->or_group_start()
->where('mumbai_date >=', $mdfrom)
->where('mumbai_date <=', $mdto)
->group_end()
->group_end()
->where('order_location', $sess_location)
->where('designer_id',$sess_designer_id)
->where('is_deleted=',0)
->limit($length, $start)
->get();
Или, если вы действительно хотите использовать between
, вы можете сделать это как
$query = $this->db
->group_start()
->where('delivery_date BETWEEN '.$this->db->escape($from).' AND '.$this->db->escape($to))
->group_end()
->group_start()
->group_start()
->where('order_date BETWEEN '.$this->db->escape($odfrom).' AND '.$this->db->escape($odto))
->group_end()
->or_group_start()
->where('mumbai_date BETWEEN '.$this->db->escape($mdfrom).' AND '.$this->db->escape($mdto))
->group_end()
->group_end()
->where('order_location', $sess_location)
->where('designer_id',$sess_designer_id)
->where('is_deleted=',0)
->limit($length, $start)
->get();