You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:50:46