两个日期之间的差异 - illuminate manager laravel
difference between 2 dates - illuminate manager laravel
我制作了一个电视节目表,我需要对相隔超过 600 秒的日期进行排序
但它不起作用;(
有人知道怎么做吗?
非常感谢那些愿意帮助我的人。
$dateMin = Carbon::now('Europe/Paris')
->endOfDay()
->addDay()
->addHours(-4)
->timestamp;
$dateMax = Carbon::now('Europe/Paris')
->endOfDay()
->addDay()
->timestamp;
$datas = Capsule::table('channels')
->select('channels.number',
'channels.slug',
'channels.display-name',
'channels.icon',
'programs.start',
'programs.stop',
'programs.title',
'programs.img',
'programs.thumbnail',
'programs.desc'
)
->where([
['start', '>', $dateMin],
['stop', '>', $dateMin],
['start', '<', $dateMax],
])
->whereRaw('stop - start > 601')
->leftJoin('programs', 'channels.slug', '=', 'programs.slug')
->orderBy('number')
->orderBy('start')
->get();
return $datas->groupBy('display-name');
没有太多上下文,我唯一能想到的就是尝试在 where 子句中对参数进行分组
$datas = Capsule::table('channels')
->select('channels.number',
'channels.slug',
'channels.display-name',
'channels.icon',
'programs.start',
'programs.stop',
'programs.title',
'programs.img',
'programs.thumbnail',
'programs.desc'
)
->where(function($query) use($dateMin,$dateMax) {
$query->where([
['start', '>', $dateMin],
['stop', '>', $dateMin],
['start', '<', $dateMax],
])
->whereRaw('stop - start > 601')
})
->leftJoin('programs', 'channels.slug', '=', 'programs.slug')
->orderBy('number')
->orderBy('start')
->get();
如果这不起作用,请尝试为两者转储查询 sql,不带参数分组(您问题中的代码)和带参数分组(我的答案中的代码)并查看 sql 语句生成。您可以使用 toSql()
代替 get()
.
来获取查询 sql
我制作了一个电视节目表,我需要对相隔超过 600 秒的日期进行排序
但它不起作用;(
有人知道怎么做吗?
非常感谢那些愿意帮助我的人。
$dateMin = Carbon::now('Europe/Paris')
->endOfDay()
->addDay()
->addHours(-4)
->timestamp;
$dateMax = Carbon::now('Europe/Paris')
->endOfDay()
->addDay()
->timestamp;
$datas = Capsule::table('channels')
->select('channels.number',
'channels.slug',
'channels.display-name',
'channels.icon',
'programs.start',
'programs.stop',
'programs.title',
'programs.img',
'programs.thumbnail',
'programs.desc'
)
->where([
['start', '>', $dateMin],
['stop', '>', $dateMin],
['start', '<', $dateMax],
])
->whereRaw('stop - start > 601')
->leftJoin('programs', 'channels.slug', '=', 'programs.slug')
->orderBy('number')
->orderBy('start')
->get();
return $datas->groupBy('display-name');
没有太多上下文,我唯一能想到的就是尝试在 where 子句中对参数进行分组
$datas = Capsule::table('channels')
->select('channels.number',
'channels.slug',
'channels.display-name',
'channels.icon',
'programs.start',
'programs.stop',
'programs.title',
'programs.img',
'programs.thumbnail',
'programs.desc'
)
->where(function($query) use($dateMin,$dateMax) {
$query->where([
['start', '>', $dateMin],
['stop', '>', $dateMin],
['start', '<', $dateMax],
])
->whereRaw('stop - start > 601')
})
->leftJoin('programs', 'channels.slug', '=', 'programs.slug')
->orderBy('number')
->orderBy('start')
->get();
如果这不起作用,请尝试为两者转储查询 sql,不带参数分组(您问题中的代码)和带参数分组(我的答案中的代码)并查看 sql 语句生成。您可以使用 toSql()
代替 get()
.