VariantOptionExcl.php 3.83 KB
<?php
    
    namespace artbox\catalog\models;

    use artbox\core\models\Language;
    use yii\db\ActiveQuery;

    /**
     * This is the model class for table "variant_option_excl".
     *
     * @property integer                       $variant_option_group_excl_id
     *
     * @property VariantOptionGroupExcl        $variantOptionGroupExcl
     * @property VariantOptionExclLang[]       $variantOptionExclLangs
     * @property Language[]                    $languages
     * @property VariantOptionExclToCategory[] $variantOptionExclToCategories
     * @property Category[]                    $categories
     * @property VariantToVariantOptionExcl[]  $variantToVariantOptionExcls
     * @property Variant[]                     $variants
     */
    class VariantOptionExcl extends Option
    {
        /**
         * @inheritdoc
         */
        public static function tableName()
        {
            return 'variant_option_excl';
        }
    
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getVariantOptionGroupExcl()
        {
            return $this->hasOne(VariantOptionGroupExcl::className(), [ 'id' => 'variant_option_group_excl_id' ])
                        ->inverseOf('variantOptionExcls');
        }
    
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getVariantOptionExclLangs()
        {
            return $this->hasMany(VariantOptionExclLang::className(), [ 'variant_option_excl_id' => 'id' ])
                        ->inverseOf('variantOptionExcl');
        }
    
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getLanguages()
        {
            return $this->hasMany(Language::className(), [ 'id' => 'language_id' ])
                        ->viaTable('variant_option_excl_lang', [ 'variant_option_excl_id' => 'id' ]);
        }
    
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getVariantOptionExclToCategories()
        {
            return $this->hasMany(VariantOptionExclToCategory::className(), [ 'variant_option_excl_id' => 'id' ])
                        ->inverseOf('variantOptionExcl');
        }
    
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getCategories()
        {
            return $this->hasMany(Category::className(), [ 'id' => 'category_id' ])
                        ->viaTable('variant_option_excl_to_category', [ 'variant_option_excl_id' => 'id' ]);
        }
    
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getVariantToVariantOptionExcls()
        {
            return $this->hasMany(VariantToVariantOptionExcl::className(), [ 'variant_option_excl_id' => 'id' ])
                        ->inverseOf('variantOptionExcl');
        }
    
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getVariants()
        {
            return $this->hasMany(Variant::className(), [ 'id' => 'variant_id' ])
                        ->viaTable('variant_to_variant_option_excl', [ 'variant_option_excl_id' => 'id' ]);
        }
        /**
         * Get exact Option Group id value
         *
         * @return int|null
         */
        public function getGroupId()
        {
            return $this->variant_option_group_excl_id;
        }
        /**
         * Set Option Group link to Option model
         *
         * @param int $id
         *
         * @return void
         */
        public function setGroupId(int $id)
        {
            $this->variant_option_group_excl_id = $id;
        }
        /**
         * Get Group query
         *
         * @return \yii\db\ActiveQuery
         */
        public function getGroup(): ActiveQuery
        {
            return $this->getVariantOptionGroupExcl()
                        ->inverseOf('options');
        }
    }