добавление предложения whereBetween не возвращает ожидаемый набор результатов - PullRequest
0 голосов
/ 04 марта 2019

Пример набора данных

id,created_at, status, category, c_sub_category
1, 2019-01-02 16:36:06, closed, Issue, Team 1
2, 2019-01-03 18:36:01, closed, Fix, Team 2

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

Я использую Laravel 5.6 и SQLite Я пытаюсь вернуть определенные результаты между временными рамками.Проблема в том, что когда я добавляю предложение whereBetween в столбец created_at, результаты пропускаются.created_at имеет тип DateTime

startDate и endDate являются экземплярами углерода

{
    "startDate": {
        "date": "2019-01-01 00:00:00.000000",
        "timezone_type": 3,
        "timezone": "America/Toronto"
    },
    "endDate": {
        "date": "2019-01-06 23:59:59.999999",
        "timezone_type": 3,
        "timezone": "America/Toronto"
    }
}

Этот запрос должен вернуть два результата.Я группирую по c_sub_category, и есть только два c_sub_categories, но в настоящее время он возвращает только 1 результат

$data  = Tickets
            ::whereBetween('created_at', [$week["startDate"], $week["endDate"]])
            ->where('status', 'closed')
            ->where('category', '!=', 'New Development')
            ->groupBy('c_sub_category')
            ->get();

Этот запрос без предложения whereBetween, возвращающего два результата, которые являются правильными

$data  = Tickets
            ->where('status', 'closed')
            ->where('category', '!=', 'New Development')
            ->groupBy('c_sub_category')
            ->get();

Другие способы, которые я пробовал, также не возвращают правильный набор результатов

$data  = Tickets
            ::where(function ($query) use ($week) {
                $query->whereBetween('created_at', [$week["startDate"], $week["endDate"]]);
            })
            ->where('category', '!=', 'New Development')
            ->where('status', 'closed')
            ->groupBy('c_sub_category')
            ->get();

$data  = Tickets
            ::where(function ($query) use ($week) {
                $query->whereBetween('created_at', [$week["startDate"], $week["endDate"]]);
            })
            ->where(function ($query) use ($week) {
                $query->where('category', '!=', 'New Development');
                      ->where('status', 'closed');

            })
            ->groupBy('c_sub_category')
            ->get();

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Другое решение может быть:

Tickets::where('created_at', '>=','2019-01-01 00:00:00.000000')->where('created_at', '<=','2019-01-06 23:59:59.999999');
0 голосов
/ 04 марта 2019

Вы должны поставить длинный формат даты, а не только дату

Tickets:whereBetween('created_at', ['2019-01-01 00:00:00.000000', '2019-01-06 23:59:59.999999'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...