Laravel count count

Я пытаюсь выполнить поиск по флажкам и условиям, но я получаю эту ошибку в ответ:

count(): Parameter must be an array or an object that implements Countable

логика

  1. Я могу выбрать 1 или более вариантов
  2. В фоновом режиме проверьте, какие варианты выбрал
  3. Зависит от результатов возврата

controller

public function advancedsearch(Request $request) {
$options = Specification::whereHas('subspecifications')->with(['subspecifications' => function($query) {
$query->status('Active');
}])->get();
$brands = Brand::all();
$brandss = Input::has('brands') ? Input::get('brands') : [];
$suboption = Input::has('suboptions') ? (int)Input::get('suboptions') : [];
$min_price = Input::has('min_price') ? (int)Input::get('min_price') : null;
$max_price = Input::has('max_price') ? (int)Input::get('max_price') : null;

//codes
if(count($request['suboptions'])){
$products = DB::table('products')
->join('product_subspecification', function ($join) {
$suboption = Input::has('suboptions') ? Input::get('suboptions') : [];
$join->on('products.id', '=', 'product_subspecification.product_id')
->where('product_subspecification.subspecification_id', '=', $suboption);
})
->paginate(12);
}

elseif(count($request['brands'])){
$products = DB::table('products')
->whereIn('products.brand_id', $brandss)
->paginate(12);
}

elseif(count($request['min_price']) && count($request['max_price'])){
$products = DB::table('products')
->whereBetween('price', [$min_price, $max_price])
->paginate(12);
}


return view('front.advancesearch', compact('products', 'brands', 'options'));
}

Резюме кода выше

Я получаю все бренды из базы данных и проверяю, выбрал ли только один бренд или несколько

$brands = Brand::all();
$brandss = Input::has('brands') ? Input::get('brands') : [];

Затем я проверяю, выбрал ли какой-либо бренд вообще или нет count и возвращая результаты

elseif(count($request['brands'])){
$products = DB::table('products')
->whereIn('products.brand_id', $brandss)
->paginate(12);
}

но я получаю ошибку, которой я поделился выше.

Любая идея?

how my html look likes

один

how the result **dd** look like

array:4 [▼
"_token" => "Wqs9yzd5qwGtbv01asbCzsISeVQxHsCoWVQM1ifO""brands" => array:1 [▼
0 => "3"]
"min_price" => null
"max_price" => null
]

Blade

<div class="checkbox">
@foreach($option->subspecifications as $suboption)

@if($option->title == 'Brand')
<label for="brands">
<input name="brands[]" type="checkbox" value="{{$suboption->id}}">
{{ucfirst($suboption->title)}}
</label>
@else
<label for="suboptions">
<input name="suboptions[]" type="checkbox" value="{{$suboption->id}}">
{{ucfirst($suboption->title)}}
</label>
@endif

@endforeach
</div>

0

Решение

Изменен счет с, решил проблему

elseif($request->has['brands']){

PS: Основываясь на 3 разных функциях, которые у меня есть, которые возвращают данные моего поиска, я смешал результаты, но это не связано с этим
вопрос. count ошибка устранена, поэтому я отмечу ее как исправленную.

Благодаря miken32

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector