sql >> データベース >  >> RDS >> Mysql

Laravelは条件付きの2つの列の合計を計算します

    コレクションの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. MySQL IS NOT NULLと!=''の違い

    2. コンポジットインデックスがある場合、通常のMySqlインデックスが必要ですか

    3. JavaからSQLクエリに変数を挿入する

    4. ユーザーIDのリストに割り当てられたIDを抽出する