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

问题描述 投票:1回答:1

我需要使用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语句来编写它。我们如何用Query Builder编写“干净”?

php mysql laravel
1个回答
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-> orWhere来传递函数。

© www.soinside.com 2019 - 2024. All rights reserved.