'Trying to make multi filter function
am trying to do multi filter function but am having little problem...
this requests works fine but i need to add two more requests in it... and i really don't know how...
$courses = Course::when($r->level, function ($query, $level) {
return $query->where('level', 'like', "%{$level}%");
})->when($r->category, function ($query, $category) {
return $query->where('course_category_id', 'like', "%{$category}%");
})->when($r->price && in_array($r->price, ['more-expensive', 'less-expensive']), function ($query) use ($r) {
return $query->orderBy('price', $r->price == 'less-expensive' ? 'asc' : 'desc');
}, function ($query) {
return $query->orderByDesc('id');
})->paginate(18);
am having top rated courses and discount courses.
// discounts courses filter
$discounts = Course::where('discount', '!=', null)->orderBy('id')->paginate(18);
// top rated courses filter
$itemsRated = DB::table('ratings')->select('course_id', DB::raw('AVG(stars_rated) as count'))
->groupBy('course_id')->orderBy("count", 'desc')->get();
$courseIds = [];
foreach ($itemsRated as $item) {
array_push($courseIds, $item->course_id);
}
$fieldOrder = join(", ", $courseIds);
$bestRated = Course::whereIn('id', $courseIds)->orderByRaw("FIELD(id, $fieldOrder)")->paginate(18);
both work but i need it in $courses Can someone please help me with this?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
