Я пытаюсь навсегда получить поиск, работающий над jqgrid. В онлайн-примерах нет примера контроллера для реализации стороны контроллера поиска. Посмотрев на другие случайные сообщения в Интернете, я попытался адаптировать свою логику к моей ситуации. Пришел к этому внутри моего контроллера данных сеткиjqgid search controller implementation - PHP (codeigniter)
Все критерии поиска доступны мне через $ фильтры переменная. Внутри первого цикла цикла я могу получить к ним доступ, как $ item ['field'];, $ item ['op']; и $ item ['data'];. Как есть, все, что я возвращаюсь с сервера, это grouptype_id = '23'
Я просто не знаю, как динамически генерировать предложение where для моего запроса codeigniter. Пожалуйста, порекомендуйте.
if($this->input->get('_search')=="true"){
$where = "";
$ops = array(
'eq'=>'=',
'ne'=>'<>',
'lt'=>'<',
'le'=>'<=',
'gt'=>'>',
'ge'=>'>=',
'bw'=>'LIKE',
'bn'=>'NOT LIKE',
'in'=>'LIKE',
'ni'=>'NOT LIKE',
'ew'=>'LIKE',
'en'=>'NOT LIKE',
'cn'=>'LIKE',
'nc'=>'NOT LIKE'
);
$filters = json_decode($this->input->get('filters'), true);
foreach ($filters['rules'] as $item){
$searchField = $item['field'];
$searchOper = $item['op'];
$searchString = $item['data'];
foreach ($ops as $key => $value) {
if ($item['op'] == $key) {
$ops = $value;
}
}
if ($searchOper == 'eq')
$searchString = $searchString;
if ($searchOper == 'bw' || $searchOper == 'bn')
$searchString .= '%';
if ($searchOper == 'ew' || $searchOper == 'en')
$searchString = '%' . $searchString;
if ($searchOper == 'cn' || $searchOper == 'nc' || $searchOper == 'in' || $searchOper == 'ni')
$searchString = '%' . $searchString . '%';
$where = "$searchField $ops '$searchString' ";
}
echo $where;
}//end if part