public function afterSave($insert, $changedAttributes) { foreach ($this->_images as $image) { $image->product_id = $this->id; $image->scenario = "insert"; $image->save(true); } if (!$insert) { //foreach ($this->_parameters as $parameter) { //ParametersValues::deleteAll('product_id = :product_id AND param_id in (:param_id)', [':product_id' => $this->id, ':param_id' => $parameter->id]); ParametersValues::deleteAll('product_id = :product_id', [':product_id' => $this->id]); //} //foreach ($this->_categories as $category) { CategoryProduct::deleteAll('product_id = :product_id', [':product_id' => $this->id]); //} //foreach ($this->_prices as $price) { Prices::deleteAll('product_id = :product_id', [':product_id' => $this->id]); //} } foreach ($this->_prices as $price) { $price->product_id = $this->id; $price->save(true); } foreach ($this->_categories as $category) { $category->product_id = $this->id; $category->save(true); } foreach ($this->_parameters as $parameter) { switch ($parameter->is_range) { case ParametersRange::RANGE_SINGLE: if ($parameter->range_id) { $new_parameter = new ParametersValues(); $new_parameter->param_id = $parameter->param_id; $new_parameter->product_id = $this->id; $new_parameter->range_id = $parameter->range_id; $new_parameter->param_value = ""; $new_parameter->save(true); } break; case ParametersRange::RANGE_MULTIPLY: //create new param for each checked range if (is_array($parameter->range_id)) { foreach ($parameter->range_id as $range_id) { if ($parameter->range_id) { $new_parameter = new ParametersValues(); $new_parameter->param_id = $parameter->param_id; $new_parameter->product_id = $this->id; $new_parameter->range_id = $range_id; $new_parameter->param_value = ""; $new_parameter->save(true); } } } break; default: if ($parameter->param_value) { $new_parameter = new ParametersValues(); $new_parameter->param_id = $parameter->param_id; $new_parameter->product_id = $this->id; $new_parameter->param_value = $parameter->param_value; $new_parameter->save(true); } break; } } parent::afterSave($insert, $changedAttributes); }