我们渴望有条件分支

我的 if 语句很难读懂

ProjectController.php


public 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


绝地无双
浏览 174回答 1
1回答

泛舟湖上清波郎朗

您可以创建一个键数组并在该数组上循环。在循环内部,您可以检查它是否为空,如果不是,则应用条件。$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();注意:-我正在考虑静态键,因为请求对象可能具有与过滤器操作无关的其他数据。
打开App,查看更多内容
随时随地看视频慕课网APP