protected function saveProductStock($productId) { //多属性库存保存 if ($_REQUEST['is_multiple'] == 1) { if ($_REQUEST['attr_stock']) { $temp_ids = array(); foreach ($_REQUEST['attr_stock'] as $attr_id => $row) { if (empty($row)) { continue; } $model = ProductStock::model()->findByAttributes(array('product_id' => $productId, 'attr_id' => $attr_id)); if (empty($model)) { $model = new ProductStock(); } $model->product_id = $productId; $model->attr_id = $attr_id; $model->quantity = $row; $model->add_time = time(); $model->update_time = time(); $flag = $model->save(); array_push($temp_ids, $attr_id); } //todo 删除出了这次保存外的其他数据,防止错误数据存在 $criteria = new CDbCriteria(); $criteria->addCondition('product_id=' . $productId); $criteria->addNotInCondition('attr_id', $temp_ids); ProductStock::model()->deleteAll($criteria); } } else { $model = ProductStock::model()->findByAttributes(array('product_id' => $productId)); if (empty($model)) { $model = new ProductStock(); } $model->product_id = $productId; $model->attr_id = 0; $model->quantity = $_REQUEST['quantity']; $model->add_time = time(); $model->update_time = time(); $flag = $model->save(); //todo 删除出了这次保存外的其他数据,防止错误数据存在; $criteria = new CDbCriteria(); $criteria->addCondition('id != ' . $model->id); $criteria->addCondition('product_id =' . $productId); ProductStock::model()->deleteAll($criteria); } return true; }