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

我目前正在尝试通过模型使用 Laravel 控制器从数据库获取数据Maintain。有没有办法根据前端 axios post 发出的请求数据查询数据库,这包括变量 sub 和 zone,我有能够使用 sub 或 zone 但不能同时使用两者来获取数据,有没有办法构建多 where 查询 if $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();

    }

  }

当前返回错误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']

]

任何帮助,将不胜感激。


慕莱坞森
浏览 59回答 1
1回答

慕工程0101907

尝试这样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
打开App,查看更多内容
随时随地看视频慕课网APP