laravel 多条件查询

$cases = DB::table('cases')->where('cid',$cid)->join('admin_users', 'cases.uid', '=', 'admin_users.id')->select('cases.*','admin_users.name','admin_users.avatar')->when($condition,function($query) use($condition){
                return $query->where(function($query) use($condition){
                    $query->orwhere('cases.title','like','%'.$condition.'%')->orwhere('cases.style','like','%'.$condition.'%')->orwhere('cases.address','like','%'.$condition.'%');
                });
            })->when($default,function($query) use($default){
                return $query->where(function($query) use($default){
                    $query->where('cases.style','like','%'.$default.'%');
                });
            })->when($time == 1,function($query){
                return $query->orderBy('cases.addtime','desc');
            })->when($time == 0,function($query){
                return $query->orderBy('cases.addtime','asc');
            })->when($hot == 1,function($query){
                return $query->orderBy('cases.hot','desc');
            })->when($hot == 0,function($query){
                return $query->orderBy('cases.hot','asc');
            })->when($minarea > 0 && $maxarea > 0,function($query) use($minarea,$maxarea){
                return $query->wherebetween('cases.area',[$minarea,$maxarea]);
            })->when($minarea > 0 && $maxarea == 0,function($query) use($minarea){
                return $query->where('cases.area','>=',$minarea);
            })->when($minarea == 0 && $maxarea > 0,function($query) use($maxarea){
                return $query->where(cases.'area','<=',$maxarea);
            })
                ->orderBy('cases.sort','desc')->get();

  

原文地址:https://www.cnblogs.com/vinzen/p/10937979.html