Метод Laravel Carbon :: today () возвращает предыдущий день - PullRequest
0 голосов
/ 18 сентября 2018

Я написал функцию для фильтрации билетов, забронированных пользователем и агентом, по дате.Это в основном приложение для бронирования билетов.У этого пользователя и агента можно бронировать разные билеты, поэтому в админ-панели я показываю общее количество заявок, забронированных пользователем на сегодняшний день, и наоборот для агентов.Таким образом я делаю это, используя Carbon для проверки с сегодняшней датойНо я получаю другой вид продукции!

Контроллер:

$ticketsTodayUsers = Booking::with('users')->where("createdAt", ">=", Carbon::today())->whereHas("users", function($subQuery){ 
    $subQuery->where("usertype", "=", "normal");
    })->get();

Итак, у меня есть две таблицы: таблица бронирования и таблица пользователей, по которой я проверяю заявки, созданные сегодня, с использованием carbon :: today () с usertype в качестве обычного или в качестве агента.

Но когда я проверяю сегодня (19 сентября 2018 года), я получаю результат подсчета вчера (18 сентября 2018 года).Я не получаю счет сегодняшнего дня, который равен нулю, вместо того, чтобы считать счет от вчерашнего дня или длинного периода назад, как 14 сентября 2018 года.Я не знаю, где я делаю неправильно!

Основным условием является то, что мне нужно разделять количество заказов пользователей и агентов за каждый день, поэтому с помощью функции createAt, поданной из db и carbon today, я попытался сопоставить оба.Но я не получаю ожидаемого ответа!

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Попробуйте с этим:

$ticketsTodayUsers = Booking::with('users')
     ->whereDate("createdAt", ">=", Carbon::now()->toDateString())
     ->whereHas("users", function($subQuery){ 
         $subQuery->where("usertype", "=", "normal");
     })->get();
0 голосов
/ 18 сентября 2018

Попробуйте использовать параметр $ tz - TimeZone.

Carbon::today('Asia/Calcutta');

И попробуйте использовать WhereData(), WhereDay():

->whereDay('createdAt', '=', date('d'))

или

->whereDate('createdAt', Carbon::today())

Конечно, с соответствующим часовым поясом

Booking::with('users')->whereDate('createdAt', Carbon::today('Asia/Calcutta')->toDateString())->whereHas("users", function($subQuery){
            $subQuery->where("usertype", "=", "normal");
        })->get();
...