Beispiel #1
0
 public function afterSave()
 {
     if (!$this->owner->isNewRecord) {
         $this->beforeDelete();
     }
     if (count($this->_tags)) {
         $tagAssigns = [];
         $modelClass = get_class($this->owner);
         foreach ($this->_tags as $name) {
             if (!($tag = Tag::findOne(['name' => $name]))) {
                 $tag = new Tag(['name' => $name]);
             }
             $tag->frequency++;
             if ($tag->save()) {
                 $updatedTags[] = $tag;
                 $tagAssigns[] = [$modelClass, $this->owner->primaryKey, $tag->id];
             }
         }
         if (count($tagAssigns)) {
             Yii::$app->db->createCommand()->batchInsert(TagAssign::tableName(), ['class', 'item_id', 'tag_id'], $tagAssigns)->execute();
             $this->owner->populateRelation('tags', $updatedTags);
         }
     }
 }