AutoTimestampBehavior
Рубрика: Перевод Cookbook
13 Июл. 2009
Вы устали в ручную заполнять поля creted/modify в вашей таблице? Вам надоелио постоянно присваивать значения текущей даты при вставке/редактированию записи? Вы создали в моделе для этого отдельный метод? Забудьте! Теперь за вас всю работу сделает AutoTimestampBehavior. (прим. переводчика)
Такой behavior будет автоматически заполнять поля датой изменения и создания записи:
<?php
class AutoTimestampBehavior extends CActiveRecordBehavior {
/**
* Поле которое содержит дату создания записи
*/
public $created = 'created';
/**
* Поле которое содержит дату редактирования записи
*/
public $modified = 'modified';
public function beforeValidate($on) {
if ($this->Owner->isNewRecord)
$this->Owner->{$this->created} = new CDbExpression('NOW()');
else
$this->Owner->{$this->modified} = new CDbExpression('NOW()');
return true;
}
}
Изменения в моделе
Добавьте это в модель для использования:
public function behaviors(){
return array(
'AutoTimestampBehavior' => array(
'class' => 'application.components.AutoTimestampBehavior',
// вы можете указать дополнительные опции здесь
)
);
}
- Cookbook AutoTimestampBehavior [англ.]
Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
- Парни из русского сообщества перевели очень важную часть документации - "Использование построителя форм". Это всё нас будет ждать в ... "Перевод справки по форм-билдеру"
- Эта статья устарела т.к. была написана для yii версии 1.0.х; Если вы используете более новую версию - у вас могут ... "Валидация формы средствами Yii"
- Мы постоянно совершенствуем свои приложения позволяя пользователям загружать свои документы, аватарки и др. Хочешь упростить все эти функции? Читай обзор ... "Обзор дополнения CFile"

andy_s
Было сказано: Понедельник, 13 Июль 2009
Люблю красивые решения :)
Но раз уж это перевод, то можно было бы и комменты в коде перевести ;)

[guest] Гость
Было сказано: Вторник, 14 Июль 2009
А как же
"Тип столбца TIMESTAMP обеспечивает тип представления данных, который можно использовать для автоматической записи текущих даты и времени при выполнении операций INSERT или UPDATE. При наличии нескольких столбцов типа TIMESTAMP только первый из них обновляется автоматически."
??? разве это не более правильный путь ?

[guest] hyzhak
Было сказано: Воскресенье, 30 Октябрь 2011
в том-то и прикол, что в MySQL только первое поле в таблице может автоматически проставлять текущее время автоматически.
если есть два поля
created (TIMESTAMP)
modified (TIMESTAMP)
то на автомате база поставит текущее время в поле created, а modified останется пустым


