Esempio n. 1
0
 public function actionNormalize()
 {
     /**
      * @var $tag Tag
      */
     $updated = 0;
     $deleted = 0;
     $list = [];
     foreach (Tag::find()->each() as $tag) {
         $name = mb_strtolower($tag->name);
         if (isset($list[$name])) {
             TagEvent::updateAll(['tag_id' => $list[$name]], ['tag_id' => $tag->id]);
             $tag->delete();
             $deleted++;
             continue;
         }
         $list[$name] = $tag->id;
     }
     $this->stdout(Console::wrapText("- {$updated} updated, {$deleted} deleted", 10), Console::BOLD);
     $this->stdout("\n");
 }
Esempio n. 2
0
 /**
  * @return EventQuery
  */
 public function getTags()
 {
     return $this->hasMany(Tag::className(), ['id' => 'tag_id'])->indexBy('id')->viaTable(TagEvent::tableName(), ['event_id' => 'id']);
 }
Esempio n. 3
0
 /**
  *  Отвязываем теги от элемента
  * @param       $obj
  * @param array $keys
  * @return bool
  * @throws \yii\db\Exception
  */
 public static function unbind($obj, array $tags)
 {
     /**
      * @var \common\models\Tag[] $existsTag
      */
     $tags = static::filter($tags);
     $existsTag = [];
     if ($tags) {
         $existsTag = static::find()->where(['name' => $tags])->asArray()->all();
     }
     if ($obj instanceof Event) {
         $cond = ['event_id' => $obj->id];
         foreach ($existsTag as $ex) {
             $cond['tag_id'][] = $ex['id'];
         }
         if ($existsTag) {
             Yii::$app->db->createCommand('UPDATE tag SET popularity=popularity-1 WHERE id IN (' . implode(',', ArrayHelper::getColumn($existsTag, 'id')) . ') and popularity>0')->execute();
         }
         TagEvent::deleteAll($cond);
     }
 }