Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel查询生成器-高级条件子句(可选参数)_Php_Mysql_Laravel - Fatal编程技术网

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

Php Laravel查询生成器-高级条件子句(可选参数),php,mysql,laravel,Php,Mysql,Laravel,我需要带有接受可选参数的查询生成器的子句。例如,考虑以下内容: 我们有三个搜索字段用于搜索产品名称、公司名称和位置(邮政编码、城市或州)。2^3(8)种可能性: 该位置与或连接 WHERE location.postal_code LIKE '%...%' OR location.city LIKE '%...%'; 以及搜索框之间的关系 WHERE (location.postal_code LIKE '%...%' OR location.city LIKE '%...%') AND co

我需要带有接受可选参数的查询生成器的子句。例如,考虑以下内容:

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

该位置与或连接

WHERE location.postal_code LIKE '%...%' OR location.city LIKE '%...%';
以及搜索框之间的关系

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

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

您应该像这样使用where闭包:

    $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->或在其中传递函数的位置