Laravel中如何在LeftJoin查询中添加指定字段的Select语句
正确在Laravel LeftJoin查询中添加指定字段Select的方法
你的错误在于漏掉了leftJoin方法调用,直接写了->('questions', ...),这会导致语法错误。以下是两种正确的写法:
方法一:保留Eloquent模型写法(原代码的User::方式)
直接在leftJoin之前或之后添加select方法即可:
$users = User::select('users.name as u_name') ->leftJoin('questions', function($q) use ($user) { $q->on('users.id', '=', 'questions.user_id') ->where('questions.evaluator_id', '=', $user); }) ->where('users.id','!=', auth()->user()->id) ->paginate(10);
方法二:使用DB::table方式
补全leftJoin方法调用,同时保留select:
$users = DB::table('users') ->select('users.name as u_name') ->leftJoin('questions', function($q) use ($user) { $q->on('users.id', '=', 'questions.user_id') ->where('questions.evaluator_id', '=', $user); }) ->where('users.id','!=', auth()->user()->id) ->paginate(10);
补充说明
- 如果需要同时查询
questions表的字段,可在select中追加,例如:select('users.name as u_name', 'questions.content as q_content') - 使用Eloquent模型写法时,返回的集合元素是
User模型实例,但仅填充你查询的字段,其他属性为null;使用DB::table写法则返回标准的stdClass对象。
内容的提问来源于stack exchange,提问作者Jason Batongbakal
相关产品推荐
相关产品推荐

