relationBehavior::className(), 'relations' => [ 'product_categories' => 'entity1' // Product category ] ], ]; } /** * @inheritdoc */ public static function tableName() { return '{{%product}}'; } /** * @inheritdoc */ public function rules() { return [ [['tax_brand_id'], 'integer'], [['name'], 'string', 'max' => 150], [['categories'], 'safe'], // [['product_id'], 'exist', 'skipOnError' => true, 'targetClass' => Product::className(), 'targetAttribute' => ['product_id' => 'product_id']], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'product_id' => Yii::t('product', 'Product ID'), 'name' => Yii::t('product', 'Name'), 'tax_brand_id' => Yii::t('product', 'Brand'), 'brand' => Yii::t('product', 'Brand'), 'categories' => Yii::t('product', 'Categories'), // relation behavior field ]; } /** * @return \yii\db\ActiveQuery */ public function getBrand() { return $this->hasOne(TaxOption::className(), ['tax_option_id' => 'tax_brand_id']); } public function getFullName() { return $this->brandname .' '. $this->name; } public function getBrandName() { return $this->getBrand()->one()->valueRenderHTML; } public function getCategory() { /** @var ActiveQuery $categories */ $categories = $this->getRelations('product_categories'); $count = $categories->count(); if ($count == 0) return 'None'; return $categories->one()->ValueRenderFlash . ($count > 1 ? ' + '. $count : ''); } /** * @inheritdoc * @return ProductQuery the active query used by this AR class. */ public static function find() { return new ProductQuery(get_called_class()); } }