总的来说Laravel收集条件

时间:2018-12-12 07:55:55

标签: collections sum conditional-statements laravel-5.7

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

    $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使用过滤器,但这意味着我必须将所有事务重复两次。

1 个答案:

答案 0 :(得分:0)

尝试一下:

$collection->where(/* your condition */)->sum($column);