我需要使用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语句来编写它。我们如何使用查询生成器编写“干净”?
答案 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->或者在其中传递函数。