Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel联接未返回指定列_Php_Laravel_Join - Fatal编程技术网

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不起作用,但这似乎起到了作用

您可以提交并接受自己的答案。