基于Laravel5中传递的参数的多个Where子句

基于Laravel5中传递的参数的多个Where子句,laravel,laravel-5,Laravel,Laravel 5,我想在我的控制器中实现此查询的功能 select * from table where true if($param1 != ""){ and table.column1 = '$param1' } if($param2 != ""){ and table.column2 = '$param2' } 到目前为止,我所尝试的是 function seachpullethouse(Request $request){ $searchcode = $request->code;

我想在我的控制器中实现此查询的功能

select * from table where true
if($param1 != ""){
  and table.column1 = '$param1'
}
if($param2 != ""){
  and table.column2 = '$param2'
}
到目前为止,我所尝试的是

function seachpullethouse(Request $request){
    $searchcode = $request->code;     
    $mpullethouse = DB::table('mpullethouses')->query();

    if(!empty($searchcode)){
        $query ->Where('mpullethouses.code','like','%'.$searchcode.'%');
    }

    $query ->select('mpullethouses.*')->get();
    return response()->json(['mpullethouse'=>$mpullethouse]);
}

但这似乎是错误的…请任何人帮我一下好吗??。

你可以在的时候使用

public function seachpullethouse(Request $request)
{
    $searchcode = $request->code;

    $mpullethouse = DB::table('mpullethouses')
        ->when($searchcode, function ($query) use ($searchcode) {
            return $query->where('code', 'like', "%{$searchcode}%");
        })
        ->get();

    return response()->json(['mpullethouse' => $mpullethouse]);
}

有关更多信息,请查看

Thx bro..U save my day:)