日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線(xiàn)咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

本文介紹了Laravel用一個(gè)條件計(jì)算兩列之和的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

我有一個(gè)從數(shù)據(jù)庫(kù)中獲得的倉(cāng)庫(kù)集合

[
    {
        "id": 1,
        "warehouse": "India"
        "sales": [
            {
                "id": 1,
                "warehouse_id": 1,
                "price": "120.00",
                "quantity": 1000,
                "status": 1
            },
            {
                "id": 2,
                "warehouse_id": 1,
                "price": "20.00",
                "quantity": 100,
                "status": 1
            },
            {
                "id": 3,
                "warehouse_id": 1,
                "price": "40.00",
                "quantity": 1000,
                "status": 2
            }
        ]
    },
    {
        "id": 2,
        "warehouse": "Malaysia"
        "sales": [
            {
                "id": 4,
                "warehouse_id": 2,
                "price": "160.00",
                "quantity": 100,
                "status": 1
            }
        ]
    }
]

我想計(jì)算每個(gè)倉(cāng)庫(kù)的總收入

總收入根據(jù)銷(xiāo)售額status屬性計(jì)算

如果Status=1,則產(chǎn)品已交付,因此應(yīng)將price * quantity添加到總收入

如果status=2,則返回產(chǎn)品,因此應(yīng)從總收入中減去price * quantity

印度倉(cāng)庫(kù)基本示例:

total_income = 120*1000 + 20*100 - 40*1000

馬來(lái)西亞:

total_income = 160*100

我嘗試使用Warehouse::withSum();,但沒(méi)有任何效果。
我想知道有沒(méi)有收藏的好辦法

推薦答案

您只需向集合的sum()方法傳遞幾個(gè)回調(diào):

$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在這里使用有點(diǎn)麻煩,但調(diào)用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() 

這篇關(guān)于Laravel用一個(gè)條件計(jì)算兩列之和的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,

分享到:
標(biāo)簽:Eloquent errorLaravelcalculatesumoftwocolumnswithacondition exception I
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定