Как я могу сгруппировать результаты в подгруппах с множественными условиями с красноречивым laravel? - PullRequest
0 голосов
/ 04 февраля 2019

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

DB::table(Product::TABLE_NAME)->select(
    DB::raw("prize"),
    DB::raw("count(*) as total")
)
->groupBy('prize')->get();

Я не знаю, куда помещены условия.

Я ожидаю этого вывода:

id_group | total |
------------------
1        | 34    |
2        | 46    |
3        | 126   |

id_group представляет каждое условие:

1 - prize = null
2 - prize = 0
3 - prize > 0

Решение : Я получил это, но я не знаю, является ли более эффективный способ или существует другоеспособ сделать это:

DB::table(Product::TABLE_NAME)->select(
    DB::raw("SUM(CASE
        WHEN prize IS NULL THEN 1 ELSE 0 END) AS 1"),
    DB::raw("SUM(CASE
        WHEN prize = 0 THEN 1 ELSE 0 END) AS 2"),
    DB::raw("SUM(CASE
        WHEN prize > 0 THEN 1 ELSE 0 END) AS 3")
)->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...