Я хочу создать расширенный поиск, фильтрующий данные о сотрудниках в соответствии с определенными критериями, выбранными пользователями.Это приложение разработано с использованием laravel 5. Я запрашиваю данные, используя функцию ajax и оператор if для фильтрации критериев.Результаты появляются, но он не фильтрует никаких условий в операторе if.
Контроллер условия фильтрации выглядит так:
public function kakitangan(Request $request)
{
$query = DB::table('itemregistrations')
->select('itemregistrations.ItemRegistrationID','itemregistrations.name', 'itemregistrations.Nobadan');
if ($request->section != ""){
$query->where('SectionID', $request->section);
}
$newitem = $query->get();
return response::json($newitem);
}
Я также пробовал это:
$query = DB::table('itemregistrations')
->select('itemregistrations.ItemRegistrationID','itemregistrations.name', 'itemregistrations.Nobadan');
if(request('section')) {
$query->where('SectionID', request('section'));
}
$newitem = $query->get();
return response::json($newitem);
Но результат тот же ... все данные в элементах регистрации появляются на странице вывода.Хотя я выбираю другой критерий раздела.
Это код страницы просмотра для выбора:
<div class="row">
<div class="col-lg-2">
{{ Form::label('Seksyen', 'Seksyen') }}
</div>
<div class="col-lg-2">
{{ Form::select('section', $sections, '', ['class' => 'form-control select2', 'placeholder' => '--pilih--']) }}
</div>
</div>
</div>
Идентификатор выбора из функции контроллера:
$sections = Section::pluck('sectionname', 'SectionID');
//sent to html view
return view('carian.index', compact('sections'));
Кнопка длявызовите ajax-функцию, чтобы получить запрос:
<button class="btn btn-primary btn-md" id="cari">Cari</button>
Появится код для результатов:
<script type="text/javascript">
$( "#cari" ).click(function() {
var seksyen = $("#section").val();
$.ajax({
url: '{{ url('kakitangan') }}',
data: {'section': seksyen},
dataType: 'json',
success: function (data) {
console.log(data);
$('#datatable tr').not(':first').not(':last').remove();
var html = '';
for(var i = 0; i < data.length; i++){
html += '<tr>'+
'<td>' + data[i].name + '</td>' +
'</tr>';
}
$('#datatable tr').first().after(html);
},
error: function (data) {
}
});
});
</script>
Должно быть, когда пользователь выбирает раздел, отображаются только сотрудники раздела.Но теперь при выборе какой-либо секции появляются все штабы.
Я просто попытался проверить, правильно ли значение секции передается контроллеру, используя это в контроллере:
$try=$request->input('section');
return response::json($try);
В результате получается пустой массив..no значение передано?Это значение раздела не передается правильно?Как исправить эту проблему?