DbHelp.ru
Маленький Yii блог
Комментарии
Denis: Полностью рабочий код для Yii 1.1.15 можете найти на https://gith...
DeD: Запрацювало тільки після заміни if (isset($_GET['root'])) на if...
Denis: Если что- можете поюзать полный код уроков: https://github.com/d...
Mj: Мдааа так было интересно, ех... Но лучше поздно чем нико...
Mj: Добавте оповещание по email



Сервер Ultima Online - Forest Wars (от создателя данного блога)

AutoTimestampBehavior

Рубрика: Перевод Cookbook

Оцените эту статью:

Рейтинг: 0.00 (0)
13 Июл. 2009
Опубликовать в Twitter Написать в Facebook Опубликовать в своем блоге livejournal.com

Yii Framework Blog img http://dbhelp.rucookbookВы устали в ручную заполнять поля 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',
            // вы можете указать дополнительные опции здесь
        )
    );
}



Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
Другие yii статьи:

  1. Столкнулся я с вопросом как без создания формы через CFormModel — поюзать встроенный валидатор для проверки капчи. Вот чего то ... "Валидация капчи в Controller-е"

  2. Я очень рад сообщить о выходе новой версии Yii Framework 1.1.7. В этой сборке было включено более 90 новых возможностей, ... "Yii PHP framework 1.1.7 is released"

  3. Наверняка многим из вас понадобится написать некую динамическую загрузку отображений. Т.е. Если указанное отображение есть — загружаем его, если ... "Умная загрузка отображений"

andy_s

Было сказано: Понедельник, 13 Июль 2009

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

[adm] zolter

Было сказано: Понедельник, 13 Июль 2009

сенк то я забыл :)

[guest] Гость

Было сказано: Вторник, 14 Июль 2009

А как же
"Тип столбца TIMESTAMP обеспечивает тип представления данных, который можно использовать для автоматической записи текущих даты и времени при выполнении операций INSERT или UPDATE. При наличии нескольких столбцов типа TIMESTAMP только первый из них обновляется автоматически."
??? разве это не более правильный путь ?

[guest] zolter

Было сказано: Вторник, 14 Июль 2009

Это я понимаю от самой базы?

[guest] hyzhak

Было сказано: Воскресенье, 30 Октябрь 2011

в том-то и прикол, что в MySQL только первое поле в таблице может автоматически проставлять текущее время автоматически.
если есть два поля
created (TIMESTAMP)
modified (TIMESTAMP)
то на автомате база поставит текущее время в поле created, а modified останется пустым

Оставить комментарий


Код:
Имя: