sql >> Database teknologi >  >> RDS >> Mysql

Laravel beregne summen af ​​to kolonner med en betingelse

Du kan bare sende et par tilbagekald til samlingens sum() metode:

$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 er lidt vanskelig at bruge her, men kalder withAggregate virker.

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. SQL-scripts - Findes der det, der svarer til en #define?

  2. Fejl ved forbindelse til databasen:(ved brug af klasse org.gjt.mm.mysql.Driver)

  3. Hent database eller enhver anden fil fra det interne lager ved hjælp af run-as

  4. PL/SQL ORA-01422:nøjagtig hentning returnerer mere end det anmodede antal rækker