【问题标题】:Writing a function in laravel在 laravel 中写一个函数
【发布时间】:2018-01-12 15:23:04
【问题描述】:

我有以下函数从数据库中获取一些与作业相关的数据。用户可以搜索具有职位名称/关键字、城市和/或类别的职位。用户可以选择一个选项,例如仅按标题或类别搜索工作。或者他可以使用所有选项进行深度搜索。以下是我的功能:

public function jobsearch(Request $request)
    {
        $keyword = htmlspecialchars($request->input('keyword'));
        $city_id = $request->input('city_id');
        $category_id = $request->input('category_id');

        if($keyword !== '' && $city_id != 0 && $category_id == 0)
        {
        $data = DB::table('job_details')->where('job_title', 'like', '%'.$keyword.'%')->where('city_id', $city_id)->get();
        } 
        elseif($keyword !== '' && $city_id == 0 && $category_id != 0) 
        {
        $data = DB::table('job_details')->where('job_title', 'like', '%'.$keyword.'%')->where('category_id', $category_id)->get();
        } 
        elseif($keyword == '' && $city_id != 0 && $category_id != 0)
        {
        $data = DB::table('job_details')->where('category_id', $category_id)->where('city_id', $city_id)->get();
        }
        elseif($keyword !== '' && $city_id == 0 && $category_id == 0)
        {
        $data = DB::table('job_details')->where('job_title', 'like', '%'.$keyword.'%')->get();
        }
        elseif($keyword == '' && $city_id == 0 && $category_id != 0)
        {
        $data = DB::table('job_details')->where('category_id', $category_id)->get();
        }
        elseif($keyword == '' && $city_id != 0 && $category_id == 0)
        {
        $data = DB::table('job_details')->where('city_id', $city_id)->get();
        }
        else
        {
        $data = DB::table('job_details')->where('job_title', 'like', '%'.$keyword.'%')->where('category_id', $category_id)->where('city_id', $city_id)->get();
        }

        foreach($data as $data)
        {
            echo $data->job_title.'<br>';
        }

    } 

如您所见,该函数包含许多 if 和 elseif 语句,非常混乱。我的问题是是否有任何方法可以以干净的方式编写给定的函数?您将如何以您的风格编写给定的函数?请帮忙。

【问题讨论】:

    标签: php laravel function laravel-5.3 laravel-query-builder


    【解决方案1】:

    你真的错过了 Laravel 查询构建器的最佳部分。

    public function jobsearch(Request $request) {
        // htmlspecialchars makes no sense here
        $keyword = $request->input('keyword');
        $city_id = $request->input('city_id');
        $category_id = $request->input('category_id');
    
        $query = DB::table('job_details');
    
        if($keyword) {
            $query->where('job_title', 'like', '%'.$keyword.'%');
        }
    
        if($city_id) {
            $query->where('city_id', $city_id);
        }
    
        if($category_id) {
            $query->where('category_id', $category_id);
        }
    
        $results = $query->get();
    
        foreach($data as $data) { ... }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 2019-03-16
      相关资源
      最近更新 更多