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; } }
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; } }
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()); }