$this->mall_id, 'from_type' => 'CloudStock', 'capital_type' => ['equal', 'price_difference_equal'] ]; if ($capitalType == 'commission_frozen') { $where['status'] = 0; $settlement_status = 0; } else { $settlement_status = 1; } $list = CapitalLog::find()->where($where)->select('capital_type,sum(change_num) as change_num') ->groupBy('capital_type')->all(); foreach ($list as $item) { $obj = CloudStockStatistic::findOne(['mall_id' => $this->mall_id, 'capital_type' => $item['capital_type'], 'settlement_status' => $settlement_status]); if (empty($obj)) { $obj = new CloudStockStatistic(); $obj->loadDefaultValues(); $obj->mall_id = $this->mall_id; } $obj->capital_type = $item['capital_type']; $obj->settlement_status = $settlement_status; $obj->money = $item['change_num']; $obj->save(); } } }