Как совмещать и / или операторы в продуктовых магазинах?
Я использую codeigniter и grocerycrud, я хочу установить таблицу с grocerycrud следующим образом:
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 ответ
Решение
Продуктовый творог также использует активную запись 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()
функция, которую она производит, где предложение как and error_code=1 or audio_status=1
и используя подход, который у меня есть, вы получите пункт where как and (error_code=1 or audio_status=1)
сгруппированное состояние