【问题标题】:How to apply Mysql AND/OR clause in Laravel如何在 Laravel 中应用 Mysql AND/OR 子句
【发布时间】:2016-09-09 16:49:08
【问题描述】:

我正在尝试在 Laravel 中进行 MySQL 查询。

> "select * from users u where (name like
> '%".$request->search_string."%' or email like
> '%".$request->search_string."%') and (user_type=2)";

我试过下面的代码

public function searchUsers(Request $request){
        $query = DB::table('users as u');
        $query->where('u.user_type',2);
        $query->where(function($query,$request){
            $query->orwhere('u.name','LIKE','%'.$request->search_string.'%');
            $query->orwhere('u.email','LIKE','%'.$request->search_string.'%');
        });
        $result['all_users'] = $query->get();
    return Response::json($result);
}

但我收到以下错误

缺少参数 2 App\Http\Controllers\PatientController::App\Http\Controllers{closure}()

【问题讨论】:

    标签: php mysql laravel laravel-5


    【解决方案1】:

    您在 where 子句中有语法错误。看到这个:

    public function searchUsers(Request $request){
            $query = DB::table('users as u');
            $query->where('u.user_type',2);
            $query->where(function($query)use($request){ // Here  is the change
                        //  ^^ Pass only one parameter to closure function and pass `$request` in `use` function
                $query->orwhere('u.name','LIKE','%'.$request->search_string.'%');
                $query->orwhere('u.email','LIKE','%'.$request->search_string.'%');
            });
            $result['all_users'] = $query->get();
        return Response::json($result);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 2015-08-26
      • 2021-02-02
      • 1970-01-01
      • 2014-05-09
      • 1970-01-01
      • 2012-06-04
      相关资源
      最近更新 更多