Laravel использует sum с несколькими условиями

#mysql #laravel #eloquent #laravel-8

Вопрос:

У меня есть модель продажи с price quantity status атрибутами и

Я хочу вернуть общий доход из таблицы продаж (приведенный ниже запрос возвращает желаемый результат).

 SELECT SUM(case when status = 1 then price * quantity when status = 2 then price * quantity * -1 else 0 end) as total
FROM sales;
 

Я попытался использовать select(DB::raw()) , но он не вернул номер, так как я не мог использовать sum() функцию

Ответ №1:

Предположим, у вас есть модель продажи, попробуйте что-то вроде :

 $result = Sale::select(DB::raw('SUM(case when status = 1 then price * quantity when status = 2 then price * quantity * -1 else 0 end) as total'))
    ->get();