Mysql
 sql >> база данни >  >> RDS >> Mysql

Laravel изчислява сумата от две колони с условие

Можете просто да предадете няколко обратни извиквания към sum() на колекцията метод:

$warehouses_collection->map(function ($warehouse) {
    return (object) [
        'id' => $warehouse->id,
        'warehouse' => $warehouse->warehouse,
        'total_income' => collect($warehouse->sales)->sum(function ($sale) {
            ((int) $sale->price) * $sale->quantity * ($sale->status == 1 ? 1 : -1)
        })
    ];
});

WithSum е малко трудно да се използва тук, но извикването на withAggregate работи.

Warehouse::withAggregate(
    'sales as total_income',
    'sum(case when status = 1 then price * quantity when status = 2 then price * quantity * -1 else 0 end)'
)->get() 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL заявка за геолокация

  2. Грешка sql:Преобразуването на тип данни varchar в тип данни за дата и час доведе до стойност извън диапазона

  3. Грешка 1046 Няма избрана база данни, как да се разреши?

  4. Защо виждам COLLATION 'xxx' не е валиден за НАБОР ОТ СИМВОВЕ 'yyy'

  5. Създаване на CakePHP REST API от съществуващ проект