AutoTimestampBehavior — время создания и модификации модели
Re: AutoTimestampBehavior — время создания и модификации мод
При валидации если в поле ничего нет, то выводит NOW().
В сознании новичка много возможностей, в сознании эксперта — лишь несколько.
Re: AutoTimestampBehavior — время создания и модификации мод
Можете объяснить подробно откуда и за счет чего происходит вызов AutoTimestampBehavior::beforeValidate() ?Sam Dark писал(а):Позволяет автоматически заполнять время создания и изменения модели.
УстановкаКод: Выделить всё
<?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; } }
В модели:Оригинал: http://www.yiiframework.com/doc/cookbook/14/Код: Выделить всё
public function behaviors(){ return array( 'AutoTimestampBehavior' => array( 'class' => 'application.components.AutoTimestampBehavior', //Тут можно переопределить названия полей, хранящих время создания и изменения модели. ) ); }
Re: AutoTimestampBehavior — время создания и модификации мод
фу, понял наконец то, через $behavior->attach($this); поведение еще и регится как обработчик событий... Не мог понять как поведения попадают в Сcomponent->_e , мудрено все
Re: AutoTimestampBehavior — время создания и модификации мод
А можно и при помощи Триггеров MySQL. Например так:
Код: Выделить всё
DELIMITER //
DROP TRIGGER IF EXISTS `order_default_datetime`//
CREATE TRIGGER `order_default_datetime`
BEFORE INSERT ON `order`
FOR EACH ROW BEGIN
IF NEW.`date`='0000-00-00 00:00:00' THEN
SET NEW.`date`=NOW();
END IF;
END;//