/** * Set organization categories * @param array $categories ids. */ public function setCategories(array $categories, $add = false) { $dontDelete = array(); if (!empty($categories)) { foreach ($categories as $c) { if (empty($c)) { continue; } $found = ArticleCategory::model()->findByAttributes(array('category' => $c, 'article' => $this->id)); // если не было категории - делаем if (!$found) { $record = new ArticleCategory(); $record->category = (int) $c; $record->article = $this->id; $record->save(false); } $dontDelete[] = $c; } } if ($add === false) { // Удаляем все категории, которых не было в массиве if (sizeof($dontDelete) > 0) { $cr = new CDbCriteria(); $cr->addNotInCondition('category', $dontDelete); ArticleCategory::model()->deleteAllByAttributes(array('article' => $this->id), $cr); } else { // удаляем все категории, т.к. пустой массив // Delete all relations ArticleCategory::model()->deleteAllByAttributes(array('article' => $this->id)); } } }