Laravel查询生成器 - 高级条件子句(可选参数)

时间:2017-12-17 11:48:27

标签: php mysql laravel

我需要使用Query Builder接受可选参数的子句。例如,请考虑以下事项:

我们有三个搜索字段用于产品标题,公司名称和位置(邮政编码,城市或州)。 2 ^ 3(8)种可能性:

该位置与OR连接。

WHERE location.postal_code LIKE '%...%' OR location.city LIKE '%...%';

搜索框之间的关系

WHERE (location.postal_code LIKE '%...%' OR location.city LIKE '%...%') AND company.name LIKE '%...%';

我们可以使用原始查询和if-else语句来编写它。我们如何使用查询生成器编写“干净”?

1 个答案:

答案 0 :(得分:2)

你应该使用这样的闭包:

    $q->where(function($q) use($request) {
     if($request->code)
     {
       $q->orWhere('postal_code ','LIKE','%'.$request->code.'%');
     }

     if($request->city)
     {
       $q->orWhere('city','LIKE','%'.$request->code.'%');
     }

     if($request->companyName)
     {
      $q->where('companyName',.....);
     }
})->get();

所以你有什么地方,或者在哪里形成你的查询干净。您也可以通过请求在封闭内使用它。您也可以使用$ q->或者在其中传递函数。