Использование ActiveRedord от Yii в игре тайм менеджере
Всем привет! Сегодня я хочу вам рассказать, как была реализована работа с кэшем в социальное игре тайм менеджере. Можете считать эту статью продолжением вот этой. Напомню, что в проекте используется php (Yii), mysql и memcached. В проекте достаточно много сущностей, для каждой из которой есть своя модель, которая наследуется от CActiveRecord. Хранятся файлы моделей следующим образом. В папке models создаем папку base. Когда генерируем модель через Gii, то указываем, что ее нужно положить в папку models/base и к имени класса добавляем Base. Затем создаем в models аналогичный класс без Base, который наследуется от базового класса и имеет в себе лишь метод model (). Кстати заранее скажу, что базовые модели наследуем не от CActiveRecord, а от ExtActiveRecord — расширяем CActiveRecord под наши нужды. Но об этом позже. Пока что разницы никакой.Пример: models/base/BaseUser.php — стандартный класс, который генерируется через Gii models/User.php — класс, который наследуется от BaseUser и имеет в себе метод model () /** * Returns the static model of the specified AR class. * @param string $className active record class name. * @return User the static model class */ public static function model ($className=__CLASS__) { return parent: model ($className); } Данная схема используется для того, чтобы в случае повторной генерации файла модели не потерять свой код и просто не забивать пространство стандартными кодом от Yii. Не забываем добавить в конфиге 'application.models.base.*'. Перейдем собственно к теме поста и поставим задачи, которые хотим решить: Уменьшить количество запросов в базу на обновление Уменьшить количество запросов в базу на выборку Читать далее