Product::saveVariants PHP Method

saveVariants() private method

private saveVariants ( array $variants ) : boolean
$variants array
return boolean
    private function saveVariants(array $variants)
    {
        $transaction = Yii::app()->getDb()->beginTransaction();
        try {
            $productVariants = [];
            foreach ($variants as $var) {
                $variant = null;
                if (isset($var['id'])) {
                    $variant = ProductVariant::model()->findByPk($var['id']);
                }
                $variant = $variant ?: new ProductVariant();
                $variant->attributes = $var;
                $variant->product_id = $this->id;
                if ($variant->save()) {
                    $productVariants[] = $variant->id;
                }
            }
            $criteria = new CDbCriteria();
            $criteria->params = [':product_id' => $this->id];
            $criteria->addCondition('product_id = :product_id');
            $criteria->addNotInCondition('id', $productVariants);
            ProductVariant::model()->deleteAll($criteria);
            $transaction->commit();
            return true;
        } catch (Exception $e) {
            $transaction->rollback();
            return false;
        }
    }