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 getPictures() { return $this->hasMany(ProductPicture::className(), ['product_id' => 'id'])->andWhere(['!=', 'status', self::STATUS_DELETE]); }