我的 if 语句很难读懂ProjectController.phppublic function index(Request $request){ $cats = Category::all(); $users = User::all(); if(!empty($request->project_name && $request->requester && $request->user_name && $request->status && $request->requester_tell)) { $view = Project::where('project_name', 'like', '%'. $request->project_name .'%')->where('project_name', 'like', '%'. $request->requester .'%')->get(); } if(!empty($request->project_name && $request->requester && $request->user_name && $request->status)) { $view = Project::where('project_name', 'like', '%'. $request->project_name .'%')->paginate(10)->get(); }else if(!empty($request->project_name && $request->requester && $request->user_name)) { $view = Project::where('requester', 'like', '%'. $request->requester .'%')->paginate(10)->get(); } else if(!empty($request->project_name && $request->requester)) { $view = Project::where('user_name', 'like', '%'. $request->user_name .'%')->paginate(10)->get(); } else if(!empty($request->project_name)) { $view = Project::where('status', 'like', '%'. $request->status .'%')->paginate(10)->get(); } else if(!empty($request->project_name || $request->requester || $request->user_name || $request->status || $request->requester_tell)) { $view = Project::where('requester_tell', 'like', '%'. $request->requester_tell .'%')->paginate(10)->get(); } else if(!empty($request->requester && $request->user_name)) { } else if(!empty($request->status && $request->requester_tell)) { } else if(!empty($request->requester && $request->requester_tell)) { } else { };写到此为止,但我想知道是否有更好的写法我想从数据库中提取与搜索条件匹配的数据本来都包含null
1 回答

泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
您可以创建一个键数组并在该数组上循环。在循环内部,您可以检查它是否为空,如果不是,则应用条件。
$relevantKeys = ["project_name", "requester", "user_name", "status", "requester_tell"];
$query = Project::select("*");
foreach ($relevantKeys as $value) {
if (!empty($request->{$value})) {
$query = $query->where($value, 'like', '%' . $request->{$value} . '%');
}
}
$view = $query->paginate(10)->get();
注意:-我正在考虑静态键,因为请求对象可能具有与过滤器操作无关的其他数据。
- 1 回答
- 0 关注
- 173 浏览
添加回答
举报
0/150
提交
取消