我有一张桌子jobs
。作业在jobs_days
我想返回至少有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
列,但现在会返回重复的作业。
答案 0 :(得分:1)
几个小时后,我找到了解决方案。在连接中使用on,我添加了一个简单的:
->groupBy('jobs.id')
给我独特的工作。不确定为什么明显不起作用,但这似乎可以完成这项工作