Laravel-条件where子句



net dev在Laravel工作,在雄辩中度过了一段美好的时光。我需要有人指出我在这个示例查询中出错的地方。因此,当执行此操作时,我不会得到左联接之外的任何where子句,即使$请求等于我检查的内容。真的很感激一些";头部;我肯定这是愚蠢的显而易见的事情。

public function get_courses_by_category_id(Request $request,$category_id)
{
$per_page = Helper::per_page();
$query = Course::select('courses.id','courses.slug','courses.title','courses.author','courses.price','courses.free','courses.upsell','courses.image','courses.avg_ratings','courses.total_reviews')
->leftJoin('course_categories', 'courses.id', '=', 'course_categories.course_id')
->when($request->input('rating') === true, function($query, $request){
$query->where('courses.avg_ratings', '>=', $request->rating);
})
->when($request->input('price') === 'all', function($query)
{
$query->where('price');
})
->when($request->input('price') === '250', function($query){
$query->where(`courses.price`, `<= || is`, 249.99, `price`, null);
})
->when($request->input('price') === '500', function($query){
$query->where(`courses.price`, `>= || <=`, 250.00, `price`, 499.99);
})
->when($request->input('price') === '1000', function($query){
$query->where(`courses.price`, `>= || <=`, 500.00, `price`, 999.99);
})
->when($request->input('price') === '1001', function($query){
$query->where(`courses.price`, `>=`, 1000.00);
});
$courses = $query->orderBy('courses.created_at','DESC')->paginate($per_page);
if($courses && $courses->count()){
return response()->json(['status'=>true,'courses'=>$courses]);
}else{
return response()->json(['status'=>false,'courses'=>[]]);
}
}

也许这会对有所帮助

$query = Course::select('courses.id','courses.slug','courses.title','courses.author','courses.price','courses.free','courses.upsell','courses.image','courses.avg_ratings','courses.total_reviews')
->leftJoin('course_categories', 'courses.id', '=', 'course_categories.course_id')
->when($request->input('rating') === true, function($query, $request){
$query->where('courses.avg_ratings', '>=', $request->rating);
})
->when($request->input('price') !== 'all', function($query) {
$query->when($request->input('price') === '250', function($query){
$query->orWhere('courses.price', '<=', 249.99);
})
->when($request->input('price') === '500', function($query){
$query->orWhereBetween('courses.price', [250.00, 499.99]);
})
->when($request->input('price') === '1000', function($query){
$query->orWhereBetween('courses.price', [500.00, 999.99]);
})
->when($request->input('price') === '1001', function($query){
$query->where('courses.price', '>=', 1000.00);
});
});

最新更新