Laravel whereDate часовой пояс пользователя - PullRequest
1 голос
/ 19 октября 2019

Как запросить результаты в часовом поясе пользователей?

У всех моих пользователей есть атрибут timezone, например:

Auth::user()->timezone; // America/Toronto

Часовой пояс конфигурации приложенияи часовой пояс базы данных установлен в UTC. У каждого пользователя может быть свой часовой пояс. Проблема в том, что я пытаюсь отфильтровать записи для today, и это также дает результаты вчерашнего дня:

$query->whereDate($column, Carbon::now())

Я знаю, что это из-за смещения. Я пытался использовать это, что не имеет значения:

$query->whereDate($column, Carbon::now()->tz(Auth::user()->timezone)

Как получить правильные результаты для текущего дня в часовом поясе пользователя на основе значений базы данных с использованием UTC

1 Ответ

0 голосов
/ 19 октября 2019

Вы можете попробовать добавить диапазон дат следующим образом:

$query->whereDate($column, ">=", Carbon::now()->startOfDay()->tz(Auth::user()->timezone)
->whereDate($column, "<=", Carbon::now()->endOfDay()->tz(Auth::user()->timezone);

Ключом здесь будет определение начала и конца текущего дня с использованием часового пояса по умолчанию, а затем преобразование этих временных меток в текущего пользователя. часовой пояс.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...