Exemplo n.º 1
0
 public function beforeDelete()
 {
     foreach ($this->tagUserAccesses as $item) {
         $item->delete();
     }
     ObjectTag::deleteAll(['tag_id' => $this->id]);
     return parent::beforeDelete();
 }
Exemplo n.º 2
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getObjectTags()
 {
     return $this->hasMany(ObjectTag::className(), ['object_id' => 'id']);
 }
Exemplo n.º 3
0
 private function saveTags()
 {
     if (!$this->isMy()) {
         return;
     }
     $tags = array_unique(explode(' ', $this->tags));
     // новые теги
     $oldTags = [];
     // уже имеющиеся теги
     foreach ($this->object->objectTags as $objectTag) {
         if (!in_array($objectTag->tag->name, $tags)) {
             // тег убран
             $objectTag->delete();
         } else {
             $oldTags[] = $objectTag->tag->name;
             // не будем создавать еще одну запись
         }
     }
     $tags = array_diff($tags, $oldTags);
     foreach ($tags as $tag) {
         // создаем записи для новых тегов
         $objectTag = new ObjectTag();
         $objectTag->tag_id = Tag::findByName($tag)->id;
         $objectTag->object_id = $this->object->id;
         if (!$objectTag->save()) {
             throw new Exception('Не удалось сохранить тег');
         }
     }
 }