Laravel使用where子句和$ request之类的联接数据库表

时间:2019-01-18 17:42:24

标签: laravel laravel-5

public function search(Request $request)
    {
        
        if ($request->get('search') != '') {


            $franchise = DB::table('operators')
                ->join('franchises', function ($join) {
                    $join->on('operators.id', '=', 'franchises.operator_id')
                        ->where('case_number', 'like', '%' . $request->get('search') . '%');
                })
                ->get();


            return view('franchise-home', compact('franchise'));

        } else {

            $franchise = DB::table('operators')
                ->join('franchises', 'operators.id', '=', 'franchises.operator_id')
                ->get();

            return view('franchise-home', compact('franchise'));
        }

    }

如何同时使用where子句和如何从用户那里获得请求?任何帮助深表感谢。谢谢。

2 个答案:

答案 0 :(得分:0)

您需要添加use()来访问变量,例如:

$search = $request->get('search'); // define it before query
...
->join('franchises', function ($join) use($search) { //use it inside
    $join->on('operators.id', '=', 'franchises.operator_id')
         ->where('case_number', 'like', '%' . $search . '%');
})

答案 1 :(得分:0)

下面是排序代码

public function search(Request $request) {
    $franchise = DB::table('operators')
         ->join('franchises', 'operators.id', '=', 'franchises.operator_id')
         ->when($request->get('search'), function($query) use($request) {
               $query->where('case_number', 'like', '%' . $request->get('search');
         })
         ->get();
    return view('franchise-home', compact('franchise'));
}