Merhaba geçmiş bayramınız mübarek olsun cümleten, 🙂
Şimdi ben projemde arama kısmı yaptım. Bu kısımda ürün adına göre arama yapıyorum bulamadığı zaman ise ürün koduna göre baksın istiyorum. Laravel doc'da whereHas kullanarak relation altındaki sütuna where çekebildim ama function içerisine 2 tane parametre attığım zaman hata verdi. phpstorm aşağıdaki şekilde function yanına use ($codeTerm) olarak ekleyerek orayı düzeltti.
Şimdi benim sorularım:
1-) Closure nedir ?
2-) Use kullanarak ne yapmak istedik ?
3-) Neden 2 parametre atamadım ?
Teşekkürler 🙂
public function search(Request $request){
$validator = Validator::make($request->all(),[
'term'=>[
'bail',
'required',
'max:30',
'regex:/^[0-9a-zA-ZÇŞĞÜÖİçşğüöı\s]+/'
]
]);
if($validator->fails()){
return back()->withErrors($validator);
}else{
if(session('locale')==="en"){
$langName = 'name_en';
}else{
$langName = 'name';
}
$products = Product::with('category','category'
)->where("$langName",'like',"%$request->term%")
->limit(24)
->get();
if($products->count()===0){
$codeTerm = $request->term;
$products = Product::with('category','category')
->whereHas("codes",function (Builder $query) use ($codeTerm) {
$query->where('code','=',"$codeTerm");
})->limit(1)->get();
}
return view('site.search')->with([
'term'=>$request->term,
'products'=>$products
]);
}
}