Laravel加入不返回指定列

时间:2016-04-25 14:39:57

标签: php laravel join

我有一张桌子jobs。作业在jobs_days

中可能包含1行或更多行

我想返回至少有1个工作日的jobs列表。所以我这是我的工作模式:

public function days(){
    return $this->hasMany('App\JobsDays', 'job_id', 'id');
}

哪个工作正常。但是,我需要有一个至少有一个工作日的作业列表,但是按此作业开始日期排序此列表:start2(时间戳)列。 我尝试过使用:

$jobs = Jobs::has('days')
            ->leftJoin('jobs_days', function ($join) {
                $join->where('jobs_days.job_id', '=', 'jobs.id');
            })
            ->select('jobs.id','jobs_days.start2')
            ->orderBy('jobs_days.start2', 'asc')->paginate(15);

这不会返回start2日期。如果我使用on代替where,我会获得start2列,但现在会返回重复的作业。

1 个答案:

答案 0 :(得分:1)

几个小时后,我找到了解决方案。在连接中使用on,我添加了一个简单的:

->groupBy('jobs.id')

给我独特的工作。不确定为什么明显不起作用,但这似乎可以完成这项工作