/** * Tags relation * @return static */ public function getTags() { return is_array($this->_tags) ? Tag::findAll(['id' => $this->_tags]) : $this->owner->hasMany(Tag::className(), ['id' => 'tag_id'])->viaTable(Tag::pivotTableName(), ['item_id' => 'id'], function ($query) { /** @var $query ActiveQuery */ $query->andWhere(['item_class' => $query->modelClass]); })->indexBy('id'); }