Spec-Zone.ru › Yii 2.0

Класс 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API