没有命名空间的类 yii yii\base yii\behaviors yii\caching yii\captcha yii\console yii\console\controllers yii\console\widgets yii\data yii\db yii\db\conditions yii\db\cubrid yii\db\cubrid\conditions yii\db\mssql yii\db\mssql\conditions yii\db\mysql yii\db\oci yii\db\oci\conditions yii\db\pgsql yii\db\sqlite yii\db\sqlite\conditions yii\di yii\filters yii\filters\auth yii\grid yii\helpers yii\i18n yii\log yii\mail yii\mutex yii\rbac yii\rest yii\test yii\validators yii\web yii\widgets

Class yii\behaviors\BlameableBehavior

继承yii\behaviors\BlameableBehavior » yii\behaviors\AttributeBehavior » yii\base\Behavior » yii\base\BaseObject
实现yii\base\Configurable
可用版本自2.0
源码 https://github.com/yiichina/yii2/blob/api/framework/behaviors/BlameableBehavior.php

BlameableBehavior 用来自动地把指定属性设置为当前的用户 ID。

要使用 BlameableBehavior,把下面的代码加到你的 ActiveRecord 类中:

use yii\behaviors\BlameableBehavior;

public function behaviors()
{
    return [
        BlameableBehavior::className(),
    ];
}

默认情况下,当关联的 AR 对象执行插入操作时,BlameableBehavior 将会给 created_byupdated_by 两个属性赋值为当前的用户 ID。而当 AR 对象执行更新操作时, 它只给 updated_by 属性赋值为当前的用户 ID。

由于属性值是被这个行为自动设置,所以属性值不必用户输入也因此没有必要验证。 因此,created_byupdated_by 这两个属性不应该出现在 rules() 这个模型方法中。

如果你的属性名不一样, 你可以像下面这样配置 $createdByAttribute$updatedByAttribute

public function behaviors()
{
    return [
        [
            'class' => BlameableBehavior::className(),
            'createdByAttribute' => 'author_id',
            'updatedByAttribute' => 'updater_id',
        ],
    ];
}

公共属性

隐藏继承的属性

属性类型描述被定义在
$attributes array 属性列表,属性的值将由 $value 自动填充。 数组的键是 ActiveRecord 的事件,属性就是更新于这些事件之上, 数组的值就是要更新的属性。 你可以用字符串来表示一个单独的属性也可以用一个数组来表示一系列属性。比如, `php [ ActiveRecord::EVENT_BEFORE_INSERT => ['attribute1', 'attribute2'], ActiveRecord::EVENT_BEFORE_UPDATE => 'attribute2', ] ` yii\behaviors\AttributeBehavior
$createdByAttribute string 接收当前用户 ID 值的属性。 如果你不想记录当前创建者 ID 就把它设置为 false。 yii\behaviors\BlameableBehavior
$defaultValue mixed 当用户是未登录状态下的默认值。 yii\behaviors\BlameableBehavior
$owner yii\base\Component|null The owner of this behavior yii\base\Behavior
$preserveNonEmptyValues boolean 是否保留非空的属性值 yii\behaviors\AttributeBehavior
$skipUpdateOnClean boolean $owner 没有更新的时候是否跳过这个行为 yii\behaviors\AttributeBehavior
$updatedByAttribute string 接收当前用户 ID 值的属性。 如果你不想记录当前更新者 ID 就把它设置为 false。 yii\behaviors\BlameableBehavior
$value mixed 要分配给当前属性的值。它可以是一个匿名函数, 数组格式的 callable(比如 [$this, 'methodName']),一个 Expression 对象表示的 DB 表达式 (比如 new Expression('NOW()')),标量,字符串或者一个任意的值。 如果是前者,函数的返回值将会设置给这些属性。 函数的签名应该像下面这样, `php function ($event) { // 返回值将会设置到当前的属性 } ` yii\behaviors\BlameableBehavior

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. yii\base\BaseObject
__construct() Constructor. yii\base\BaseObject
__get() Returns the value of an object property. yii\base\BaseObject
__isset() Checks if a property is set, i.e. defined and not null. yii\base\BaseObject
__set() Sets value of an object property. yii\base\BaseObject
__unset() Sets an object property to null. yii\base\BaseObject
attach() Attaches the behavior object to the component. yii\base\Behavior
canGetProperty() Returns a value indicating whether a property can be read. yii\base\BaseObject
canSetProperty() Returns a value indicating whether a property can be set. yii\base\BaseObject
className() Returns the fully qualified name of this class. yii\base\BaseObject
detach() Detaches the behavior object from the component. yii\base\Behavior
evaluateAttributes() 计算属性的值并分配给当前属性。 yii\behaviors\AttributeBehavior
events() Declares event handlers for the $owner's events. yii\behaviors\AttributeBehavior
hasMethod() Returns a value indicating whether a method is defined. yii\base\BaseObject
hasProperty() Returns a value indicating whether a property is defined. yii\base\BaseObject
init() Initializes the object. yii\behaviors\BlameableBehavior

受保护的方法

隐藏继承的方法

方法描述被定义在
getDefaultValue() 获得默认值。 yii\behaviors\BlameableBehavior
getValue() 返回给当前属性准备的值。 该方法在 evaluateAttributes() 里调用。 它的返回值将会设置到对应触发事件的属性上。 yii\behaviors\BlameableBehavior

属性详情

$createdByAttribute 公共 属性

接收当前用户 ID 值的属性。 如果你不想记录当前创建者 ID 就把它设置为 false。

public string $createdByAttribute 'created_by'
$defaultValue 公共 属性 (自版本 2.0.14 可用)

当用户是未登录状态下的默认值。

public mixed $defaultValue null
$updatedByAttribute 公共 属性

接收当前用户 ID 值的属性。 如果你不想记录当前更新者 ID 就把它设置为 false。

public string $updatedByAttribute 'updated_by'
$value 公共 属性

如果这个属性是 null,那么将使用 Yii::$app->user->id 的值作为 $value 的值。

要分配给当前属性的值。它可以是一个匿名函数, 数组格式的 callable(比如 [$this, 'methodName']),一个 Expression 对象表示的 DB 表达式 (比如 new Expression('NOW()')),标量,字符串或者一个任意的值。 如果是前者,函数的返回值将会设置给这些属性。 函数的签名应该像下面这样,

function ($event)
{
    // 返回值将会设置到当前的属性
}
public mixed $value null

方法详情

getDefaultValue() 受保护 方法 (自版本 2.0.14 可用)

获得默认值。

protected array|mixed getDefaultValue($event)
$event yii\base\Event
getValue() 受保护 方法

返回给当前属性准备的值。 该方法在 evaluateAttributes() 里调用。 它的返回值将会设置到对应触发事件的属性上。

如果 $value 属性是 null,那么将使用 $defaultValue 的值作为 $value 的值。

protected mixed getValue($event)
$event yii\base\Event

触发当前属性更新的事件

return mixed

属性值

init() 公共 方法

Initializes the object.

This method is invoked at the end of the constructor after the object is initialized with the given configuration.

public void init()