我正在使用codeigniter和grocerycrud,我想以这种方式设置一个带有foodcrud的表:
SELECT * FROM `dashboard`.`medidas_ludlum`
where FK_ludlum='190.26.88.131'
and date>= '2014-03-04 09:40:00'
and date<= '2014-03-05 09:40:00'
and (error_code=1 or audio_status=1);
我试图用这种方式做到这一点:
$uno='1';
$crud2 = new grocery_CRUD();
$crud2->set_theme('datatables');
$crud2->where('FK_ludlum',$ludlum_id);
$crud2->where('date>=',$fechainicio);$crud2->where('date<=',$fechafin);
$crud2->where('error_code =',$uno);
$crud2->or_where('audio_status =',$uno);
$crud2->set_table('medidas_ludlum');
$crud2->columns('measurement', 'fecha', 'audio_status', 'high_alarm_status', 'low_alarm_status','over_range_status','monitor_status','error_code');
$crud2->set_language("spanish");
$crud2->unset_add();$crud2->unset_delete();$crud2->unset_edit();$crud2->unset_read();
$data['crud2'] = $crud2->render();
然而,它没有给出正确的结果,例如我得到的日期超出范围的行,是否有办法设置CRUD?
答案 0 :(得分:1)
Grocery curd也使用codeigniter的活动记录,因此您可以使用如下分组条件编写where()
,无需使用or_where()
函数
$crud2->where('(error_code ='.$uno.' OR audio_status ='.$uno.')',null,FALSE);
或
$crud2->where('(error_code =1 OR audio_status =1)',null,FALSE);
您的查询中的问题是,当您使用or_where()
函数时,它会将where子句生成为and error_code=1 or audio_status=1
,并且使用我提供的方法会将where子句作为and (error_code=1 or audio_status=1)
给出一个分组条件