Beispiel #1
0
 /**
  * Add attribute action
  * @throws ErrorException
  * @throws \yii\db\Exception
  */
 public function actionAddAttribute()
 {
     $transaction = Product::getDb()->beginTransaction();
     $request = Yii::$app->request;
     $product = Product::findOne($request->post('product'));
     if (count($variants = $product->variantList)) {
         foreach ($variants as $variant) {
             $variant->delete();
         }
     }
     $combinations = $this->generate_combinations($request->post('data'));
     foreach ($combinations as $combination) {
         $discount = new Discount(['scenario' => 'insert']);
         $logistic = new LogisticStrategy(['scenario' => 'insert']);
         $discount->save();
         $logistic->save();
         $variant = new Variant();
         $variant->scenario = 'insert';
         $variant->product_id = $request->post('product');
         $variant->discount_id = $discount->id;
         $variant->logistic_strategy_id = $logistic->id;
         if ($variant->save()) {
             foreach ($combination as $attribute) {
                 $variantAttribute = new VariantAttribute();
                 $variantAttribute->scenario = 'insert';
                 $variantAttribute->attribute_id = $attribute;
                 $variantAttribute->variant_id = $variant->id;
                 $variantAttribute->save();
             }
         } else {
             var_dump("error");
             if ($transaction->isActive) {
                 $transaction->rollBack();
             }
             throw new ErrorException();
         }
     }
     TagDependency::invalidate(Yii::$app->commonCache, Product::generateTagStatic($request->get('id')));
     $transaction->commit();
 }