为了账号安全,请及时绑定邮箱和手机立即绑定

我们渴望有条件分支

我们渴望有条件分支

PHP
绝地无双 2021-12-24 15:24:17
我的 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();

注意:-我正在考虑静态键,因为请求对象可能具有与过滤器操作无关的其他数据。


查看完整回答
反对 回复 2021-12-24
  • 1 回答
  • 0 关注
  • 173 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号