ItemController::actionUpdate PHP Method

actionUpdate() public method

If update is successful, the browser will be redirected to the 'view' page.
public actionUpdate ( integer $id )
$id integer the ID of the model to be updated
    public function actionUpdate($id)
    {
        $model = $this->loadModel($id);
        $model->scenario = 'update';
        $upload = new XUploadForm();
        $image = new ItemImg();
        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValisdation($model);
        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);
        $action = 'item';
        $skuIds = array();
        if (isset($_POST['Item'])) {
            $model->attributes = $_POST['Item'];
            if ($_POST['Item']['props']) {
                $model->props = CJSON::encode($_POST['Item']['props']);
            }
            if ($_POST['Item']['skus']) {
                $model->skus = CJSON::encode($_POST['Item']['skus']);
                foreach ($_POST['Item']['skus']['table'] as $s_key => $s_value) {
                    if ($s_value['sku_id'] > 0) {
                        $sku = Sku::model()->findByPk($s_value['sku_id']);
                        $sku->props = CJSON::encode($s_value['props']);
                        $sku->quantity = $s_value['quantity'];
                        $sku->price = $s_value['price'];
                        $sku->outer_id = $s_value['outer_id'];
                        $sku->status = $s_value ? 'normal' : 'deleted';
                        $sku->save();
                        $skuIds[] = $sku->sku_id;
                    } else {
                        $jsp = CJSON::encode($s_value['props']);
                        $sku = Sku::model()->findByAttributes(array("props" => $jsp, "item_id" => $model->item_id));
                        if (!$sku) {
                            $sku = new Sku();
                            $sku->item_id = $model->item_id;
                        }
                        $sku->props = $jsp;
                        $sku->quantity = $s_value['quantity'];
                        $sku->price = $s_value['price'];
                        $sku->outer_id = $s_value['outer_id'];
                        $sku->status = $s_value ? 'normal' : 'deleted';
                        $sku->save();
                        if ($sku->sku_id > 0) {
                            $skuIds[] = $sku->sku_id;
                        }
                    }
                }
                //删除
                $rawData = Sku::model()->findAll('item_id = ' . $model->item_id);
                $delArr = array();
                foreach ($rawData as $k1 => $v1) {
                    if (!in_array($v1->sku_id, $skuIds)) {
                        $delArr[] = $v1->sku_id;
                    }
                }
                if (count($delArr)) {
                    Sku::model()->updateAll(array("status" => "deleted"), 'sku_id IN (' . implode(', ', $delArr) . ')');
                }
            }
            $model->skus_data = implode(",", $skuIds);
            if ($model->save()) {
                //$this->redirect(array('view', 'id' => $model->item_id));
            }
        }
        $this->render('update', array('model' => $model, 'image' => $image, 'upload' => $upload));
    }