laravel - Laravel API - 当状态字段为空时显示所有地区
问题描述
下面给出的是我的代码,用于显示输入状态的特定区域。但是在这段代码本身中,如果状态字段为空,我想显示数据库中的所有地区。如何修改我的代码以获得这样的输出。所以,我想要的 API 可以在调用 api 时返回所有地区。并且只有在输入状态字段时,它才会显示特定于它的特定地区。帮助我提出你的建议。
public function state_lookup(Request $request)
{
$validator = Validator::make
($request->all(),
[
'state' => 'string',
]
);
if ($validator->fails()) {
return response()->json(
[$validator->errors()],
422
);
}
if(empty($request->state)){
$dist=PersonalDetails::get(['district']);
return response()->json($dist);
}
$data = PersonalDetails::where('state',$request->state)->get(['district']);
// dd($data);
if(count($data)){
return response()->json(['message'=>'success','data'=>$data]);
}
else{
return response()->json(['message'=>'Invalid State']);
}
}
在失败的情况下,我得到如下 json 结果
{
"message": "success",
"data": []
}
它显示“成功”而不是“无效状态”
解决方案
您可以使用when
$data = PersonalDetails::when(!empty($request->state),function ($query)use($request){
$query->where('state',$request->state);
})->get(['district']);
或者
$data = PersonalDetails::where(function ($query)use($request){
if(isset($request)&&!empty($request)){
$query->where('state',$request->state);
}
})->get(['district']);
为了避免 0 键响应更改,如下所示
if(count($data)){
return response()->json(['message'=>'success','data'=>$data]);
}
推荐阅读
- excel - 条件格式的多条件公式(OUT OF MY ELEMENT HERE)
- bison - proto3-lexer3.c : 没有这样的文件或目录
- java - Docker 无法在没有 docker-compose 的情况下访问 jar 文件
- html - 嗨,谁能帮我完成我的 CSS 作业?
- javascript - 在 PHP 中增加会话变量的问题。它只增加一次
- azure-ad-b2c - Azure AD B2C - 具有 HRD、域提示和 MFA 的自定义策略
- javascript - 无需重新加载页面即可进行幻灯片放映
- powershell - 输出文件时使用 Powershell 环境变量作为字符串
- laravel - Eloquent:转换一个 sql 请求
- modelica - 在 Dymola 中使用和不使用内联集成有什么区别?