i can't search when it comes to searching NUMBERS on row int (price)
, but when searching like String number on row string (name)
it's working fine
like this in my table row here is my Product table
category_id
"56"
user_id
"1"
name
"555"
description
"fruit"
price
555
when i am searching the name
row "555" it's working fine beacuse its a string
. but when it comes to price i can't search it because it's int
here is my code for controller searching
public function index(Request $request){
$user = Auth::user()->id;
if($request->search){
$search = $request->search;
$products = Products::with('category')
->where('name','like',"%$search%")
->orWhere('price','like',"%$search%")
->where('user_id',$user)->paginate(10);
}else{
$products = Products::with('category')->where('user_id',$user)->paginate(10);
}
return view('client.product.index',['products'=>$products]);
}
here is my blade
<form action="{{ route('client.product.index') }}">
<i ></i>
<input placeholder="Search" type="search" name="search">
<button type="submit">Search</button>
</form>
@foreach ($products as $product)
<p>{{ $product->name }}</p>
<p>{{ $product->price }}</p>
@endforeach
{{ $products->withQueryString()->links('pagination::bootstrap-4') }}
CodePudding user response:
You need to group the where and orWhere so the user_id will be correctly filtered:
$products = Products::with('category')
->where( function($q) use ($search) {
$q->where('name','like',"%$search%");
$q->orWhere('price','like',"%$search%");
})
->where('user_id',$user)->paginate(10);