在mysql中使用if条件时遇到问题
我正在尝试以下操作:
我有两种模型:Pubs和Schedules(我在其中静态存储Pubs Schedules)。它们之间的相互关系如下:
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function pubSchedules()
{
return $this->hasMany( Schedule::class );
}
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function pub()
{
return $this->belongsTo(Pub::class);
}
表计划具有以下字段:
我正在开发一个过滤器,该过滤器仅显示当前时刻的开放酒吧。
我做的第一个功能很完美:
public static function isPubCurrentlyOpen($pubs)
{
$pubs->whereHas('pubSchedules', function ($pubs) {
$pubs->where('week_day', Carbon::now()->dayOfWeek)
->whereRaw(
"'" . Carbon::now('Europe/Madrid')->format("H:i:s") .
"' BETWEEN opening_time AND closing_time
"
);
} );
}
它返回可以与其他过滤器联接的查询。
问题是,当我有一家酒吧时,安排的时间是:当天09:00-03:00。当然,第二天是03:00,但我们选择这种可能性是为了使客户更容易存储时间表。
好吧,在本示例中,它使“ Carbon :: now('Europe / Madrid')-> format(“ H:i:s”)“不在opening_time和closeing_time之间,因此该发布店不会(打开时)显示为打开状态。
在MySql上进行一些测试,我尝试了如下操作:
SELECT *,
CONCAT(YEAR(NOW()), '-', MONTH(NOW()), '-', `week_day`, ' ',
`opening_time`) AS `opening_datetime`,
IF(`closing_time` < `opening_time`,
CONCAT(YEAR(NOW()), '-', MONTH(NOW()), '-', `week_day` + 1, ' ',
`closing_time`),
CONCAT(YEAR(NOW()), '-', MONTH(NOW()), '-', `week_day`, ' ',
`closing_time`)
) AS `closing_datetime`
FROM tappear_borrador.schedules
;
当它大于00:00时,可以完美地将“更一天”设置为“ closeing_time”,但是我无法在函数中设置该时间:
$pubs->whereHas('pubSchedules', function ($pubs) {
$pubs->where('week_day', Carbon::now()->dayOfWeek)
->whereRaw(
"'" . Carbon::now('Europe/Madrid')->format('Y-m-d H:i:s') .
"' BETWEEN CONCAT(YEAR(NOW()), '-', MONTH(NOW()), '-', ".Carbon::now()->dayOfWeek.", ' ', opening_time)
AND IF(closing_time < opening_time,
CONCAT(YEAR(NOW()), '-', MONTH(NOW()), '-', ".Carbon::now()->dayOfWeek." + 1, ' ', closing_time),
CONCAT(YEAR(NOW()), '-', MONTH(NOW()), '-', ".Carbon::now()->dayOfWeek.", ' ', closing_time)
)
"
);
} );
这使我没有返回任何东西(也有任何错误)。 (((我还检查了json_die(Carbon :: now()-> dayOfWeek + 1)不会再返回当前值,这可能是问题之一吗?)),
检查当前时间是否已更改,以将年/月/小时:小时与开闭时间进行比较。
所以朋友:如果close_time <开幕时间,closeing_time在第二天,然后需要比较当前时刻,我需要您的帮助来改进我的最后一个代码。
有什么想法吗?非常感谢