Class yii\behaviors\BlameableBehavior
BlameableBehavior 用来自动地把指定属性设置为当前的用户 ID。
要使用 BlameableBehavior,把下面的代码加到你的 ActiveRecord 类中:
use yii\behaviors\BlameableBehavior;
public function behaviors()
{
return [
BlameableBehavior::className(),
];
}
默认情况下,当关联的 AR 对象执行插入操作时,BlameableBehavior 将会给 created_by
和 updated_by
两个属性赋值为当前的用户 ID。而当 AR 对象执行更新操作时,
它只给 updated_by
属性赋值为当前的用户 ID。
由于属性值是被这个行为自动设置,所以属性值不必用户输入也因此没有必要验证。
因此,created_by
和 updated_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 |
属性详情
接收当前用户 ID 值的属性。 如果你不想记录当前创建者 ID 就把它设置为 false。
当用户是未登录状态下的默认值。
接收当前用户 ID 值的属性。 如果你不想记录当前更新者 ID 就把它设置为 false。
如果这个属性是 null
,那么将使用 Yii::$app->user->id
的值作为 $value 的值。
要分配给当前属性的值。它可以是一个匿名函数,
数组格式的 callable(比如 [$this, 'methodName']
),一个 Expression 对象表示的 DB 表达式
(比如 new Expression('NOW()')
),标量,字符串或者一个任意的值。
如果是前者,函数的返回值将会设置给这些属性。
函数的签名应该像下面这样,
function ($event)
{
// 返回值将会设置到当前的属性
}
方法详情
获得默认值。
protected array|mixed getDefaultValue($event) | ||
$event | yii\base\Event |
返回给当前属性准备的值。 该方法在 evaluateAttributes() 里调用。 它的返回值将会设置到对应触发事件的属性上。
如果 $value 属性是 null
,那么将使用 $defaultValue 的值作为 $value 的值。
protected mixed getValue($event) | ||
$event | yii\base\Event | 触发当前属性更新的事件 |
return | mixed | 属性值 |
---|
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() |