public function save()
 {
     if ($this->validate()) {
         $transaction = Yii::$app->db->beginTransaction();
         foreach ($this->product->attributeAssignments as $attributeAssignment) {
             $attributeAssignment->delete();
         }
         foreach ($this->attribute_assignments as $attributeAssignment) {
             $attributeAssignment['price'] = ArrayHelper::getValue($attributeAssignment, 'price', 0);
             $productAttributeAssignment = ProductAttributeAssignment::findOrCreate(['product_id' => $this->product->id, 'attribute_id' => $attributeAssignment['attribute_id'], 'attribute_option' => $attributeAssignment['attribute_option']]);
             $productAttributeAssignment->attributes = ['product_id' => $this->product->id, 'attribute_id' => $attributeAssignment['attribute_id'], 'attribute_option' => $attributeAssignment['attribute_option'], 'price' => $attributeAssignment['price']];
             $productAttributeAssignment->save();
         }
         $transaction->commit();
         return true;
     } else {
         return false;
     }
 }
Exemplo n.º 2
0
 public function save()
 {
     if ($this->validate()) {
         $transaction = Yii::$app->db->beginTransaction();
         if ($this->promotion_start_time && $this->promotion_end_time) {
             $this->promotion_start_time = strtotime($this->promotion_start_time);
             $this->promotion_end_time = strtotime($this->promotion_end_time);
         } else {
             $this->promotion_start_time = 0;
             $this->promotion_end_time = 0;
         }
         if ($this->logo) {
             $this->logo = ArrayHelper::getValue($this->logo, 'path');
         }
         $this->product->attributes = $this->attributes;
         if (!$this->product->save()) {
             return false;
         }
         ProductPicture::deleteAll(['product_id' => $this->product->id]);
         if ($this->pictures) {
             foreach ($this->pictures as $picture) {
                 $productPicture = Yii::createObject(ProductPicture::className());
                 $productPicture->attributes = ['product_id' => $this->product->id, 'value' => ArrayHelper::getValue($picture, 'path')];
                 $productPicture->save();
             }
         }
         foreach ($this->attributeAssignments as $attributeAssignment) {
             $productAttributeAssignment = ProductAttributeAssignment::findOrCreate(['product_id' => $this->product->id, 'attribute_id' => $attributeAssignment['attribute_id'], 'attribute_option' => $attributeAssignment['attribute_option']]);
             $productAttributeAssignment->attributes = $attributeAssignment;
             $productAttributeAssignment->save();
         }
         $transaction->commit();
         return true;
     } else {
         return false;
     }
 }
Exemplo n.º 3
0
 public function getAttributeCategory()
 {
     return ProductAttributeCategory::softFind()->select('product_attribute_category.*')->leftJoin(ProductAttribute::tableName(), '`product_attribute_category`.`id` = `product_attribute`.`category_id`')->leftJoin(ProductAttributeAssignment::tableName(), '`product_attribute_assignment`.`attribute_id` = `product_attribute`.`id`')->leftJoin(static::tableName(), '`product`.`id` = `product_attribute_assignment`.`product_id`')->where(['product.id' => $this->id]);
 }
 public function down()
 {
     $this->dropPrimaryKey('primary key', ProductAttributeAssignment::tableName());
 }