Как реализовать часы работы

203
21 декабря 2018, 15:50

Как реализовать хранение времени работы заведения в бд (структура)

Хочу реализовать что-то подобное

Интересует вопрос хранения этих данных в БД

Как их правильно расположить, при этом, чтобы можно было реализовать поиск по времени

Answer 1

Может и ошибаюсь, но как по мне можно хранить просто так

week_day | time_start | time_end

week_day можно хранить в формате числа 0=Воскресенье, 1=Понедельник и т.д. или в каком угодном порядке, потом можно сделать Accessor который возвращает по индексу человекопонятное имя.

time_start и time_end в формате как на первом скриншоте(09:30, 22:05 и т.д.)

Примеры фильтров:

Если диапазон находиться в диапазне между $start и $end

$users = Model::where([
    ['time_start', '>=', $start],
    ['time_end', '<=', $end]
])->get();

Если текущее время находиться в диапазоне

$now = now()->format('H:i'); // Приводит к формату 11:45
$users = \App\User::where([
    ['time_start', '<=', $now],
    ['time_end', '>=', $now]
])->get();

Если нужна привязаность к временной зоне, то надо хранить в UTC, при сохранении переводить с таймзоны пользователя в UTC и при выводе выводить по таймзоне пользователя.

Если в конфиге timezone UTC, то вот примеры:

Сохранение в UTC:

$userTZ = 'Europe/Kiev';
$timeStr = \Carbon\Carbon::createFromFormat('H:i', '13:20')
$result = \Carbon\Carbon::parse($timeStr, $userTZ)->tz('UTC')->format('H:i')

Вывод по таймзоне пользователя:

$result = \Carbon\Carbon::createFromFormat('H:i', '13:20')->tz($userTZ)->format('H:i') 
READ ALSO
Распарсить многомерный массив json

Распарсить многомерный массив json

Я видел уже один пример, но в моём случае выдаёт undefined (возможно я гдет накосячил)Есть такой массив [{"name":"\u0414\u0435\u043d\u0438\u0441","last_n":"\u041b\u0435\u0431\u0435\u0434\u0435\u0432","avatar":"\/user\/0M\/0K\/2\/pictures\/avatar\/8c16432d87bec8614f709ddba

184
Static Factory в Symfony

Static Factory в Symfony

Всем приветМне нужно в домене (в сущности) получать объект из базы данных

286
Из upstart в systemd

Из upstart в systemd

У меня Ubuntu 1804 не поддерживает upstart, использует systemd

153
Как получить статистику с Amazon Ses?

Как получить статистику с Amazon Ses?

Вопрос сушественый как получить статистику по каждому отправленому письму из рассылкиОбшее число я нашел собствено вот оно GetSendStatistics Вопрос...

212