Php Laravel联接未返回指定列
我有一张表格Php Laravel联接未返回指定列,php,laravel,join,Php,Laravel,Join,我有一张表格jobs。一个作业在jobs\u天内可能有一行或多行 我想返回至少有1个“工作日”的作业列表。所以我有我的工作模式: public function days(){ return $this->hasMany('App\JobsDays', 'job_id', 'id'); } 这很好用。但是,我需要有一个至少有一个工作日的工作列表,但按此工作开始日期对该列表进行排序:start2(时间戳)列。 我试过使用: $jobs = Jobs::has('days')
jobs
。一个作业在jobs\u天内可能有一行或多行
我想返回至少有1个“工作日”的作业列表。所以我有我的工作模式:
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
日期。如果我在
上使用而不是where
,我会得到我的start2
列,但现在它会返回重复的作业。许多小时后,我找到了解决方案。在联接中使用on,我添加了一个简单的:
->groupBy('jobs.id')
给我不同的job.id。不确定为什么distinct不起作用,但这似乎起到了作用您可以提交并接受自己的答案。