我有个模特 Logbook
还有一个模特 LogbookEntries
行车日志 hasMany
日志条目和日志条目 belongsto
日志(不在问题范围之内)。在我的 LogbookEntries
我有两个字段(加上其他字段): start date
以及 end_date
. 我想以下面的日期项为例显示所有日志项。
条目1
start_date: 01 Mar 19
end_date: 05 Mar 19
条目2
start_date: 06 Mar 19
end_date: 12 Mar 19
条目3
start_date: 19 Jun 19
end_date: 22 Jun 19
如果我说显示所有有后续日期的,那么只显示条目3。我的问题是:
Logbook::whereHas('LogbookEntries', function($q) {
$q->where('start_date', <???.end_date + 1 day>)
})
1条答案
按热度按时间jvlzgdj91#
这对我有用:
如果我正确理解你的问题,那么我认为实现这一点的最简单方法是:
注意使用whereraw而不是where,这样我们就可以使用直接的mysql代码
我在我的系统上测试了一下,效果不错。但是,我的时间戳的格式是y-m-d hh:mm:ii,所以我需要date\格式来更改它们。你可能不需要这个。因此,您可能还需要尝试以下操作:
因为这样会更整洁。
基本上,我们所做的是得到结束日期与开始日期+1天相同的条目。你离得很近,只是不太近。
我的系统,以便您可以看到它的工作:
没有whereraw语句:
用whereraw语句: