Я пытаюсь сделать следующее:
У меня есть две модели: Pub и Schedule, в которых хранятся разные графики данного паба.По этой причине соотношение между этими двумя моделями составляет 1 паб-> N расписаний:
Паб:
/**
* @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);
}
Таблица «расписания»имеет следующие поля:
id | pub_id | week_day | creation_time | закрытия_time
Например, для pub с id = 303 у нас есть следующее расписание
id |pub_id | week_day | Время открытия | Время закрытия '9', '303', '5', '00: 00: 00 ', '02: 30: 00' '10', '303', '5', '10: 30: 00 ', '13: 30: 00' '11', '303', '5', '20: 00: 00 ', '23: 59: 00'
Я пытаюсь сделатьфункция, позволяющая узнать, открыт ли данный паб в настоящее время или нет, но, поскольку я не очень много знаю об Carbon, у меня возникли некоторые проблемы, чтобы выяснить.
Я хотел бы знать, как я могу сравнить текущее время с различными временами открытия и закрытия данного паба в течение дня, и узнать, находится ли текущее время внутри интервала времени паба или нетopen.
Я пробовал это (я хочу, чтобы функция возвращала сообщение «открыто / закрыто»):
(грубая версия)
public function isPubCurrentlyOpen(Pub $pub)
{
$dayOfWeek = Carbon::now()->dayOfWeek;
$schedules = Schedule::where([
['pub_id', $pub->id ],
['week_day', $dayOfWeek],
])->get();
foreach($schedules as $schedule)
{
if(var_dump($dayOfWeek->between($schedule->opening_time, $schedule->closing_time))){
return "Open";
}
}
}
Пожалуйста, не могли бы вы помочь мне?Спасибо !!