Laravel收集条件总和

问题描述 投票:0回答:1

我有一个具有关联关系的事务集合,我想对按关联关系列的条件分隔的列求和。现在我有这个:

    $delegatedProvision = 0;
    $ownProvision = 0;

    foreach ($transactions as $transaction) {
        if ($transaction->discount->consider_improvement) {
            $delegatedProvision += $transaction->stats->$column;
            continue;
        }

        $ownProvision += $transaction->stats->$column;
    }

    $this->salesCollection->put('delegatedProvision', $delegatedProvision);
    $this->salesCollection->put('ownProvision', $ownProvision);

它可以工作,但是我想使用Laravel集合。到目前为止,我只有这个:

    $provision = $transactions->sum(function ($transaction) use ($column) {
        return $transaction->stats->$column;
    });

而且我不知道如何在sum()方法中使用条件,并且根据列$transaction->discount->consider_improvement(这是布尔值)在单独的变量中有总和。我可以将每个过滤器用于不同的consider_improvement,但这意味着我必须将所有事务重复两次。

collections sum conditional-statements laravel-5.7
1个回答
0
投票

尝试一下:

$collection->where(/* your condition */)->sum($column);
© www.soinside.com 2019 - 2024. All rights reserved.