public function actionAjaxSkus() { if (!Yii::$app->request->isAjax && empty($_POST['item_id'])) { return; } $skus = \star\catalog\models\Sku::findAll(["item_id" => $_POST["item_id"]]); $data = array(); foreach ($skus as $sku) { $arr = array(); $arr['sku_id'] = $sku->sku_id; $json = JSON::decode($sku->props); $arr['props'] = implode("_", $json); $arr['price'] = $sku->price; $arr['stock'] = $sku->quantity; $arr['outer_id'] = $sku->outer_id; $arr['tag'] = $sku->tag; $data[] = $arr; } echo json_encode($data); }
public function saveSkus($item_id, $skus) { if (is_array($skus) && count($skus)) { $skuArray = array(); foreach ($skus as $i => $sku) { if (isset($sku['sku_id']) && $sku['sku_id']) { $skuModel = Sku::find()->where(['sku_id' => $sku['sku_id']])->one(); } else { $skuModel = new Sku(); } $skuModel->item_id = $item_id; $skuModel->props = $sku['props']; $skuModel->props_name = $sku['props_name']; $skuModel->quantity = $sku['stock']; $skuModel->price = $sku['price']; $skuModel->outer_id = $sku['outer_id']; if (isset($sku['sku_id']) && $sku['sku_id']) { if ($skuModel->update() === false) { Yii::$app->session->setFlash('sku-error', Yii::t('catalog', 'Every sku must have a value !')); $this->addError('props', Yii::t('catalog', null)); } } else { if (!$skuModel->save()) { Yii::$app->session->setFlash('sku-error', Yii::t('catalog', 'Every sku must have a value !')); $this->addError('props', Yii::t('catalog', null)); } } $skuArray[$i] = $skuModel->sku_id; } //删除 $models = Sku::findAll(['item_id' => $item_id]); $delArr = array(); foreach ($models as $k1 => $v1) { if (!in_array($v1->sku_id, $skuArray)) { $delArr[] = $v1->sku_id; } } if (count($delArr)) { Sku::deleteAll('sku_id IN (' . implode(', ', $delArr) . ')'); } } else { //已经没有SKU了,要清除数据表内容 Sku::deleteAll(['item_id' => $item_id]); } }