可以将多个查询应用于 Laravel 中的模型吗?
Can multiple queries be applied to a model in Laravel?
我目前正在尝试通过模型 Maintain
使用 Laravel 控制器从数据库中获取数据。有没有一种方法可以根据来自前端的axios post 发出的请求数据查询数据库,这包括变量sub
和zone
,我有能力获得来自使用 sub
或 zone
但不是两者的数据,如果 $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
已编辑:如果您遇到错误请告诉我们:编码愉快
我目前正在尝试通过模型 Maintain
使用 Laravel 控制器从数据库中获取数据。有没有一种方法可以根据来自前端的axios post 发出的请求数据查询数据库,这包括变量sub
和zone
,我有能力获得来自使用 sub
或 zone
但不是两者的数据,如果 $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
已编辑:如果您遇到错误请告诉我们:编码愉快