2016-04-28 48 views
2

在我的项目中,hire可以有很多hire_days。每个hire_day都有一个startend时间戳。 我想创建一个查询,它只会返回所有与之相关的hire_day.end时间的雇员。 到目前为止,我的查询:Laravel`Item`有很多,只有在过去都有回报

$hires = Hires::join('hires_days', function ($join) { 
      $join->on('hire_id', '=', 'hires.id'); 
     }) 
     ->select('hires.id', 'hires.account_id', 'hires.job_number', 'hires.site_id', \DB::raw('MAX(end) AS end')) 
     ->orderBy('hires_days.end', 'asc') 
     ->groupBy('hires.id') 
     ->paginate(10); 

这将返回hires如果他们的hire_days中至少有一个是在过去,忽略了一个事实,有一些还是在未来的相关hire_days

回答

1

我认为你需要的是添加到您的查询:

->having('end', '<', time())

+0

奇怪的是,它说'列未发现:具有clause''在” 1054未知列“端” - 即使它的排序规则在那一栏! –

+0

编辑 - 实际上,当我删除'paginate()'并使用'get()'时,它就可以工作。我想那时Laravel有一个bug –