ProductOptionExcl.php 3.86 KB
<?php
    
    namespace artbox\catalog\models;

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

    /**
     * This is the model class for table "product_option_excl".
     *
     * @property integer                       $product_option_group_excl_id
     *
     * @property ProductOptionGroupExcl        $productOptionGroupExcl
     * @property ProductOptionExclLang[]       $productOptionExclLangs
     * @property Language[]                    $languages
     * @property ProductOptionExclToCategory[] $productOptionExclToCategories
     * @property Category[]                    $categories
     * @property ProductToProductOptionExcl[]  $productToProductOptionExcls
     * @property Product[]                     $products
     */
    class ProductOptionExcl extends Option
    {
        /**
         * @inheritdoc
         */
        public static function tableName()
        {
            return 'product_option_excl';
        }
        
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getProductOptionGroupExcl()
        {
            return $this->hasOne(ProductOptionGroupExcl::className(), [ 'id' => 'product_option_group_excl_id' ])
                        ->inverseOf('productOptionExcls');
        }
        
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getProductOptionExclLangs()
        {
            return $this->hasMany(ProductOptionExclLang::className(), [ 'product_option_excl_id' => 'id' ])
                        ->inverseOf('productOptionExcl');
        }
        
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getLanguages()
        {
            return $this->hasMany(Language::className(), [ 'id' => 'language_id' ])
                        ->viaTable('product_option_excl_lang', [ 'product_option_excl_id' => 'id' ]);
        }
        
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getProductOptionExclToCategories()
        {
            return $this->hasMany(ProductOptionExclToCategory::className(), [ 'product_option_excl_id' => 'id' ])
                        ->inverseOf('productOptionExcl');
        }
        
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getCategories()
        {
            return $this->hasMany(Category::className(), [ 'id' => 'category_id' ])
                        ->viaTable('product_option_excl_to_category', [ 'product_option_excl_id' => 'id' ]);
        }
        
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getProductToProductOptionExcls()
        {
            return $this->hasMany(ProductToProductOptionExcl::className(), [ 'product_option_excl_id' => 'id' ])
                        ->inverseOf('productOptionExcl');
        }
        
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getProducts()
        {
            return $this->hasMany(Product::className(), [ 'id' => 'product_id' ])
                        ->viaTable('product_to_product_option_excl', [ 'product_option_excl_id' => 'id' ]);
        }
        /**
         * Get exact Option Group id value
         *
         * @return int|null
         */
        public function getGroupId()
        {
            return $this->product_option_group_excl_id;
        }
        /**
         * Set Option Group link to Option model
         *
         * @param int $id
         *
         * @return void
         */
        public function setGroupId(int $id)
        {
            $this->product_option_group_excl_id = $id;
        }
        /**
         * Get Group query
         *
         * @return \yii\db\ActiveQuery
         */
        public function getGroup(): ActiveQuery
        {
            return $this->getProductOptionGroupExcl()
                        ->inverseOf('options');
        }
    }