#laravel
Вопрос:
У меня есть конструктор запросов с несколькими фильтрами выбора . Я не понимаю, как добавить, где с помощью vaiable . В разрешении $я получаю ниже массива.
Array
(
[0] => 4K
[1] => HD
)
В $fps я получаю ниже массива.
(
[0] => 25/1
[1] => 10/1
)
Поэтому я хочу получить соответствующие данные о значениях 4K и HD
Мой код, как показано ниже
function filter_each_video(Request $request){
if(request()->ajax()){
$where_str = "1 = ?";
// dd($req['resolution']);
$where_params = array(1);
if($request->has('resolution') amp;amp; ($request->get('resolution')!= null)){
$resolution = $request->get('resolution');
$where_str .= "and format = '".$resolution."' ";
echo "<pre>";
}
elseif($request->has('fps') amp;amp; ($request->get('fps')!= null)){
$fps = $request->get('fps');
$where_str .= " fps = '$fps' ";
// $item = Item::whereIn('fps', $fps)->get();
}
$item = Item::select('*')
->whereIn($where_str)
->orderByRaw(DB::raw("FIELD(id, ".implode(",",$where_str).")"))
->get();
$formats = DB::table('items')->select('format')->distinct()->get();
$fps = DB::table('items')->select('fps')->distinct()->get();
$data['item_count'] = $item;
$data['item'] = $item;
$html = view('frontend.pages.videos_for_each_filter', compact('data','formats','fps'))->render();
Комментарии:
1. какое имя столбца вы хотите отфильтровать с помощью «Где»?
2. @OMR «формат» — это имя столбца в базе данных
Ответ №1:
Метод Where проверяет, содержится ли значение данного столбца в данном массиве.
первый аргумент-это столбец, в котором вы хотите указать «где», второй-массив, содержащий параметры.
$optionsArray=['4K','HD']; // or you should get it from request or other source ...
и затем:
->whereIn('format',$optionsArray)