CASE через ORM laravel
Как из данных
id | market | day | isOpen
1 ya 1 1
2 ya 2 0
3 ya 3 1
...
Можно получить
id | market | monday | thuesday | wensday ...
1 ya 1 0 1
Максимально используя ORM laravel
Пока что есть голый sql запрос
SELECT market,
SUM(CASE WHEN day = 1 and isOpen THEN 1 ELSE 0 END) AS Monday,
SUM(CASE WHEN day = 2 and isOpen THEN 1 ELSE 0 END) AS Thuesday,
SUM(CASE WHEN day = 3 and isOpen THEN 1 ELSE 0 END) AS Wednesday
FROM markets
GROUP BY market
Но хотелось бы чтобы он был универсальным и подходил под разные базы
Ответы (1 шт):
Автор решения: Максим К
→ Ссылка
Предполагается, что есть модель Market:
$res = Market::select('market')
->selectRaw('SUM(CASE WHEN day = 1 and isOpen THEN 1 ELSE 0 END) AS Monday')
->selectRaw('SUM(CASE WHEN day = 2 and isOpen THEN 1 ELSE 0 END) AS Thuesday')
->selectRaw('SUM(CASE WHEN day = 3 and isOpen THEN 1 ELSE 0 END) AS Wednesday')
->groupBy('market');