public function beforeDelete()
{
$tagRelation = $this->owner->getRelation($this->tagRelation);
$pivot = $tagRelation->via->from[0];
if ($this->tagFrequencyAttribute !== false) {
/* @var ActiveRecord $class */
$class = $tagRelation->modelClass;
$pks = (new Query())->select(current($tagRelation->link))->from($pivot)->where([key($tagRelation->via->link) => $this->owner->getPrimaryKey()])->column($this->owner->getDb());
if (!empty($pks)) {
$class::updateAllCounters([$this->tagFrequencyAttribute => -1], ['in', $class::primaryKey(), $pks]);
}
}
$this->owner->getDb()->createCommand()->delete($pivot, [key($tagRelation->via->link) => $this->owner->getPrimaryKey()])->execute();
}