Есть необходимость писать логи действий пользователей в БД.
Логи подниматься будут чуть чаще чем никогда, и для этого как раз подходит MySQL ARCHIVE Storage Engine.
Написал метод в моделе:
Код: Выделить всё
public function loging($describe){
$this->time = time();
$this->user_id = Yii::app()->user->isGuest?0:Yii::app()->user->id;
$this->controller = Yii::app()->controller->id;
$this->ip = Yii::app()->request->userHostAddress;
$this->action = Yii::app()->controller->action->id;
$this->describe = $describe;
$this->save());
}
Код: Выделить всё
UPDATE `adm_logs` SET `time`=1355253697, `user_id`=0, `controller`='site', `ip`='127.0.0.1', `action`='index', `describe`='LOGIN ERROR: username:11 password:11' WHERE `adm_logs`.`id` IS NULL
Я понимаю, что создавать запись через UPDATE, а не INSERT INTO это не баг, а фича фреймворка, но всё же как переделать в данном случае на INSERT не сильно говнокодя существующий код?
Есть идея сделать прямой INSERT в таблицу через DAO и засунуть всё это в новый класс в компоненты, но хотелось бы узнать есть ли возможность INSERT'ить через AR!?
P.S. The ARCHIVE engine supports INSERT and SELECT, but not DELETE, REPLACE, or UPDATE. It does support ORDER BY operations, BLOB columns, and basically all but spatial data types.