123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- <?php
- /**
- * Created by PhpStorm.
- * User: NODELOG
- * Date: 2017/3/12
- * Time: 下午4:36
- */
- namespace common\behaviors;
- use yii\base\Behavior;
- use yii\db\ActiveRecord;
- use common\models\Category;
- class CategoryBehavior extends Behavior
- {
- public function events()
- {
- return [
- // ActiveRecord::EVENT_AFTER_DELETE => [$this, 'afterDeleteInternal'],
- SoftDeleteBehavior::EVENT_AFTER_SOFT_DELETE => [$this, 'afterSoftDeleteInternal'],
- SoftDeleteBehavior::EVENT_AFTER_RESTORE => [$this, 'afterRestoreInternal'],
- ActiveRecord::EVENT_AFTER_INSERT => [$this, 'afterInsertInternal'],
- ActiveRecord::EVENT_AFTER_UPDATE => [$this, 'afterUpdateInternal'],
- ];
- }
- /**
- * 软删除文章后(更新分类文章数)
- */
- public function afterSoftDeleteInternal($event)
- {
- Category::updateAllCounters(['article' => -1], ['id' => $event->sender->category_id]);
- }
- /**
- * 软删除文章还原后(更新分类文章数)
- */
- public function afterRestoreInternal($event)
- {
- Category::updateAllCounters(['article' => 1], ['id' => $event->sender->category_id]);
- }
- /**
- * 发布新文章后(更新分类文章数)
- */
- public function afterInsertInternal($event)
- {
- Category::updateAllCounters(['article' => 1], ['id' => $event->sender->category_id]);
- }
- /**
- * 修改文章后(如果修改了分类,更新分类文章数)
- */
- public function afterUpdateInternal($event) {
- $changedAttributes = $event->changedAttributes;
- if (isset($changedAttributes['category_id'])) {
- Category::updateAllCounters(['article' => 1], ['id' => $event->sender->category_id]);
- Category::updateAllCounters(['article' => -1], ['id' => $changedAttributes['category_id']]);
- }
- }
- }
|