VariantOptionGroupExcl.php 3.23 KB
<?php
    
    namespace artbox\catalog\models;

    use artbox\core\models\Language;

    /**
     * This is the model class for table "variant_option_group_excl".
     *
     * @property VariantOptionExcl[]          $variantOptionExcls
     * @property VariantOptionGroupExclLang[] $variantOptionGroupExclLangs
     * @property Language[]                   $languages
     */
    class VariantOptionGroupExcl extends OptionGroup
    {
        /**
         * @inheritdoc
         */
        public static function tableName()
        {
            return 'variant_option_group_excl';
        }
    
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getVariantOptionExcls()
        {
            return $this->hasMany(VariantOptionExcl::className(), [ 'variant_option_group_excl_id' => 'id' ])
                        ->inverseOf('variantOptionGroupExcl');
        }
    
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getVariantOptionGroupExclLangs()
        {
            return $this->hasMany(VariantOptionGroupExclLang::className(), [ 'variant_option_group_excl_id' => 'id' ])
                        ->inverseOf('variantOptionGroupExcl');
        }
    
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getLanguages()
        {
            return $this->hasMany(Language::className(), [ 'id' => 'language_id' ])
                        ->viaTable('variant_option_group_excl_lang', [ 'variant_option_group_excl_id' => 'id' ]);
        }
    
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getVariantOptionGroupExclToCategories()
        {
            return $this->hasMany(
                VariantOptionGroupExclToCategory::className(),
                [ 'variant_option_group_excl_id' => 'id' ]
            )
                        ->inverseOf('variantOptionGroupExcl');
        }
    
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getCategories()
        {
            return $this->hasMany(Category::className(), [ 'id' => 'category_id' ])
                        ->viaTable('variant_option_group_excl_to_category', [ 'variant_option_group_excl_id' => 'id' ]);
        }
    
        /**
         * @inheritdoc
         */
        public function getOptions()
        {
            return $this->getVariantOptionExcls()
                        ->inverseOf('group');
        }
    
        public function insertCategories(array $batch)
        {
            $query = \Yii::$app->db->createCommand()
                                   ->batchInsert(
                                       'variant_option_group_excl_to_category',
                                       [
                                           'variant_option_group_excl_id',
                                           'category_id',
                                           'sort',
                                           'status',
                                           'in_menu',
                                           'is_filter',
                                       ],
                                       $batch
                                   );
        
            $query->execute();
        }
    }