如何结合和&或杂货店的经营者

时间:2014-04-21 20:34:45

标签: codeigniter where grocery-crud

我正在使用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?

1 个答案:

答案 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)给出一个分组条件

API and Functions list