可以将多个查询应用于 Laravel 中的模型吗?

Can multiple queries be applied to a model in Laravel?

我目前正在尝试通过模型 Maintain 使用 Laravel 控制器从数据库中获取数据。有没有一种方法可以根据来自前端的axios post 发出的请求数据查询数据库,这包括变量subzone,我有能力获得来自使用 subzone 但不是两者的数据,如果 $request 包含必要的变量和标准请求(如果它们是 null ,有没有一种方法可以构建多查询或 ""?

  public function all(Request $request){
    $query = [];
    if($request->sub != ""){
      array_push($query, ['subsystem', '=', $request->sub]);
    }
    if($request->zone != ""){
      array_push($query, ['zone', '=', $request->zone]);
    }

    if(count($query) > 0){
      return Maintain::all()->where($query);
    }
    else{
      return Maintain::all();
    }
  }

目前这个 returns 有一个错误 ErrorException: array_key_exists(): The first argument should be either a string or an integer in file 但我一直在使用 Laravel 参考,但它似乎没有用。我使用 Postman 获取 $query 的读数,它包含以下内容:

[
 ['sub', '=', 'Subsystem 1'],
 ['zone', '=', 'Zone 1']
]

如有任何帮助,我们将不胜感激。

这样试试

public function all(Request $request){

   $result = Maintain::when($request->zone, function ($q) use($request){
      $q->where('zone', $request->zone);
   })
   ->when($request->sub, function ($qw) use($request){
      $qw->where('subsystem', $request->sub);
   })
   ->get();

   return($result);
}

when() 方法看起来像 if-else

已编辑:如果您遇到错误请告诉我们:编码愉快