Selamlar,
Get metodu ile bir filtreleme yapmak istiyordum fakat bazı hatalar var. Filtreleme özelliğini 'when' ile yaptım fakat bazı durumlarda bir filtreleme kategorisinde çoklu değer göndermem gerekiyor. Tekli değerlerde bir problem yok fakat çoklu değer istedğimde ilk değer cevap olarak dönüyor. (foreach döngüsüne soksamda sokmasamda ilk satır geliyor.Örneğin Kategori 1 ve Kategori 2'ye ait kitapları istiyorsam ilk 1 yazdığım için sadece Kategori 1'e ait kitaplar geliyor.) Yardımcı olursanız sevinirim. Sorgum aşağıda yazdığım gibi:
$category=$request->category;
$rating=$request->rating;
$level=$request->level;
$cats=Str::of($category)->explode(',');
$filters=Book::when($cats, function($query,$cats){
foreach($cats as $cat)
{
$query->where('catid',$cat);
}
})
->when($rating, function($query,$rating){
$query->where('rate_avg','>=',$rating);
})
->when($level, function($query,$level){
$query->where('levelid',$level);
})
->get();
return response()->json($filters);
Örnek endpoint= api/get?category=1,2&rating=2
Örnek Çıktı= (Sadece catid=1 olanlar geliyor)
{
"id": 3,
"bname": "Book 3",
"bwriter": "Author 3",
"catid": 1,
"levelid": 3,
"book_length": 234,
"summary": "Summary 3",
"rate_avg": "3.00",
"created_at": "2022-02-12T13:09:31.000000Z",
"updated_at": "2022-02-12T13:18:26.000000Z"
}