我有一个具有关联关系的事务集合,我想对按关联关系列的条件分隔的列求和。现在我有这个:
$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
,但这意味着我必须将所有事务重复两次。
尝试一下:
$collection->where(/* your condition */)->sum($column);