Класс yii\behaviors\TimestampBehavior
| Наследование | yii\behaviors\TimestampBehavior » yii\behaviors\AttributeBehavior » yii\base\Behavior » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable |
| Доступно с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/behaviors/TimestampBehavior.php |
TimestampBehavior автоматически заполняет указанные атрибуты текущим отметкой времени.
Для использования TimestampBehavior добавьте следующий код в свой класс ActiveRecord:
use yii\behaviors\TimestampBehavior;
public function behaviors()
{
return [
TimestampBehavior::className(),
];
}
По умолчанию, TimestampBehavior заполнит атрибуты created_at и updated_at текущей отметкой времени при вставке связанного объекта AR; атрибут updated_at будет заполнен отметкой времени при обновлении объекта AR. Значение отметки времени получается с помощью time().
Так как значения атрибутов будут автоматически устанавливаться этим поведением, они обычно не являются вводом пользователя и, следовательно, не должны подвергаться валидации, т.е. created_at и updated_at не должны появляться в методе rules() модели.
Для работы с базой данных MySQL необходимо объявить столбцы (created_at, updated_at) как int(11) для хранения UNIX-временной метки.
Если имена атрибутов отличаются или требуется использовать другой способ вычисления отметки времени, можно настроить свойства $createdAtAttribute, $updatedAtAttribute и $value следующим образом:
use yii\db\Expression;
public function behaviors()
{
return [
[
'class' => TimestampBehavior::className(),
'createdAtAttribute' => 'create_time',
'updatedAtAttribute' => 'update_time',
'value' => new Expression('NOW()'),
],
];
}
В случае использования объекта yii\db\Expression, как в примере выше, атрибут будет содержать не значение отметки времени, а сам объект Expression после сохранения записи. Если вам нужно получить значение из БД позже, вы должны вызвать метод refresh() записи.
TimestampBehavior также предоставляет метод touch(), позволяющий назначить текущую отметку времени указанному(ым) атрибуту(ам) и сохранить их в базе данных. Например,
$model->touch('creation_time');
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $attributes | массив | Список атрибутов, которые автоматически заполняются значением, указанным через $value. | yii\behaviors\AttributeBehavior |
| $createdAtAttribute | строка | Атрибут, который получит значение отметки времени. Установите это свойство в false, если вы не хотите записывать время создания. | yii\behaviors\TimestampBehavior |
| $owner | yii\base\Component|null | Владелец этого поведения | yii\base\Behavior |
| $preserveNonEmptyValues | логическое | Сохранять ли непустые значения атрибутов. | yii\behaviors\AttributeBehavior |
| $skipUpdateOnClean | логическое | Пропустить ли это поведение, если $owner не был изменен | yii\behaviors\AttributeBehavior |
| $updatedAtAttribute | строка | Атрибут, который получит значение отметки времени. | yii\behaviors\TimestampBehavior |
| $value | смешанный тип | Значение, которое будет назначено текущим атрибутам. | yii\behaviors\TimestampBehavior |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод, который не является методом класса. | yii\base\Object |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства объекта. | yii\base\Object |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Object |
| __set() | Устанавливает значение свойства объекта. | yii\base\Object |
| __unset() | Устанавливает свойство объекта в null. | yii\base\Object |
| attach() | Присоединяет объект поведения к компоненту. | yii\base\Behavior |
| canGetProperty() | Возвращает значение, указывающее, можно ли прочитать свойство. | yii\base\Object |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Object |
| className() | Возвращает полное имя этого класса. | yii\base\Object |
| detach() | Отсоединяет объект поведения от компонента. | yii\base\Behavior |
| evaluateAttributes() | Вычисляет значение атрибута и присваивает его текущим атрибутам. | yii\behaviors\AttributeBehavior |
| events() | Объявляет обработчики событий для событий $owner. | yii\behaviors\AttributeBehavior |
| hasMethod() | Возвращает значение, указывающее, определен ли метод. | yii\base\Object |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство. | yii\base\Object |
| init() | Инициализирует объект. | yii\behaviors\TimestampBehavior |
| touch() | Обновляет атрибут отметки времени до текущей отметки времени. | yii\behaviors\TimestampBehavior |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| getValue() | Возвращает значение для текущих атрибутов. | yii\behaviors\TimestampBehavior |
Подробности свойств
$createdAtAttribute публичное свойство
Атрибут, который получит значение отметки времени. Установите это свойство в false, если вы не хотите записывать время создания.
public string $createdAtAttribute = 'created_at'
$updatedAtAttribute публичное свойство
Атрибут, который получит значение отметки времени. Установите это свойство в false, если вы не хотите записывать время обновления.
public string $updatedAtAttribute = 'updated_at'
$value публичное свойство
Значение, которое будет назначено текущим атрибутам. Это может быть анонимная функция, вызываемая в формате массива (например, [$this, 'methodName']), объект Expression, представляющий выражение БД (например, new Expression('NOW()')), скаляр, строка или произвольное значение. Если функция, то возвращаемое значение функции будет назначено атрибутам. Подпись функции должна быть следующей,
function ($event)
{
// return value will be assigned to the attribute
}
В случае, когда значение равно null, результат PHP-функции time() будет использоваться в качестве значения.
public mixed $value = null
Подробности методов
getValue() protected method
Возвращает значение для текущих атрибутов.
Этот метод вызывается методом evaluateAttributes(). Его возвращаемое значение будет назначено атрибутам, соответствующим вызываемому событию.
В случае, когда $value равно null, в качестве значения будет использоваться результат PHP функции time().
| protected mixed getValue ( $event ) | ||
|---|---|---|
| $event | yii\base\Event |
Событие, которое запускает обновление текущего атрибута. |
| return | mixed |
Значение атрибута |
init() public method
Инициализирует объект.
Этот метод вызывается в конце конструктора после инициализации объекта с заданной конфигурацией.
| public void init ( ) |
|---|
touch() public method
Обновляет атрибут отметки времени на текущее значение.
$model->touch('lastVisit');
| public void touch ( $attribute ) | ||
|---|---|---|
| $attribute | string |
Имя атрибута для обновления. |
| throws | yii\base\InvalidCallException |
если владелец является новой записью (с версии 2.0.6). |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-behaviors-timestampbehavior.html