Abstract Class yii\db\BaseActiveRecord

继承yii\db\BaseActiveRecord » yii\base\Model » yii\base\Component » yii\base\BaseObject
实现ArrayAccess, IteratorAggregate, yii\base\Arrayable, yii\base\Configurable, yii\base\StaticInstanceInterface, yii\db\ActiveRecordInterface
Uses Traitsyii\base\ArrayableTrait, yii\base\StaticInstanceTrait
子类yii\db\ActiveRecord
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/db/BaseActiveRecord.php

ActiveRecord 是代表用对象表示关系数据的类的基类.

有关具体实现, 请参阅 yii\db\ActiveRecord.

公共属性

隐藏继承的属性

属性类型描述定义在
$activeValidators yii\validators\Validator[] 适用于当前 场景 的验证器. 该属性是只读的. yii\base\Model
$attributes array 属性值(name => value). yii\base\Model
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. 该属性是只读的. yii\base\Component
$dirtyAttributes array 已更改的属性值(name-value 对). 该属性是只读的. yii\db\BaseActiveRecord
$errors array 所有属性的错误数组. 结果是一个二维数组. 如果没有错误, 则返回空数组. 有关详细说明,请参阅 getErrors(). 该属性是只读的. yii\base\Model
$firstErrors array 第一个错误. 数组键是属性名称, 数组值是对应的错误消息. 如果没有错误, 将返回一个空数组. 该属性是只读的. yii\base\Model
$isNewRecord boolean 记录是否为新记录, 是否应在调用 save() 时插入. yii\db\BaseActiveRecord
$iterator ArrayIterator 用于遍历列表中项目的迭代器. 该属性是只读的. yii\base\Model
$oldAttributes array 旧的属性值(name-value 对). 请注意, 该属性的类型在 getter 和 setter 中有所不同. 有关详细信息, 请参阅 getOldAttributes()setOldAttributes(). yii\db\BaseActiveRecord
$oldPrimaryKey mixed 旧的主键值.如果主键是复合的, 则返回数组(列名=>列值). 否则返回一个字符串(如果键值为空则返回null). 该属性是只读的. yii\db\BaseActiveRecord
$primaryKey mixed 主键值. 如果主键是复合的, 则返回数组(列名=>列值). 否则返回一个字符串(如果键值为空则返回null). 该属性是只读的. yii\db\BaseActiveRecord
$relatedRecords array 由关系名称索引的相关记录的数组. 该属性是只读的. yii\db\BaseActiveRecord
$scenario string 此模型所在的场景. 默认为: SCENARIO_DEFAULT. yii\base\Model
$validators ArrayObject|yii\validators\Validator[] 所有在模型中声明的验证器. 该属性是只读的. yii\base\Model

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的指定的方法. yii\base\Component
__clone() 在通过克隆现有对象创建对象之后调用此方法. yii\base\Component
__construct() 构造函数. yii\base\BaseObject
__get() PHP getter 魔术方法. yii\db\BaseActiveRecord
__isset() 检查属性值是否为null. yii\db\BaseActiveRecord
__set() PHP setter 魔术方法. yii\db\BaseActiveRecord
__unset() 将组件属性设置为null. yii\db\BaseActiveRecord
activeAttributes() 返回在当前场景中需要验证的属性名称. yii\base\Model
addError() 向指定的属性添加新的错误. yii\base\Model
addErrors() 添加错误列表. yii\base\Model
afterDelete() 删除记录后调用此方法. yii\db\BaseActiveRecord
afterFind() 当创建 AR 对象并使用查询结果填充该对象时, 将调用此方法. yii\db\BaseActiveRecord
afterRefresh() 刷新 AR 对象后将调用此方法. yii\db\BaseActiveRecord
afterSave() 在插入或更新记录结束时调用此方法. yii\db\BaseActiveRecord
afterValidate() 在验证结束后调用此方法. yii\base\Model
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
attributeHints() 返回属性提示列表. yii\base\Model
attributeLabels() 返回属性标签列表. yii\base\Model
attributes() 返回记录的所有属性名称的列表. yii\db\ActiveRecordInterface
beforeDelete() 在删除记录之前调用此方法. yii\db\BaseActiveRecord
beforeSave() 在插入或更新记录的开始即调用此方法. yii\db\BaseActiveRecord
beforeValidate() 在验证开始之前调用此方法. yii\base\Model
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
canGetProperty() 返回一个值, 指示属性是否可读取. yii\db\BaseActiveRecord
canSetProperty() 返回一个值, 指示属性是否可设置. yii\db\BaseActiveRecord
className() 返回此类的完全限定名称. yii\base\BaseObject
clearErrors() 删除所有属性或单个属性的错误. yii\base\Model
createValidators() 根据 rules() 中指定的验证规则创建验证器对象. yii\base\Model
delete() 删除与此活动记录对应的表格行. yii\db\BaseActiveRecord
deleteAll() 使用提供的条件删除表中的行. yii\db\BaseActiveRecord
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
equals() 返回一个值, 该值指示给定的活动记录是否与当前记录相同. yii\db\BaseActiveRecord
extraFields() 返回可以进一步扩展并由 toArray() 返回的字段列表. yii\db\BaseActiveRecord
fields() 返回当未指定任何特定字段时, 默认应由 toArray() 返回的字段列表. yii\db\BaseActiveRecord
find() 创建一个 yii\db\ActiveQueryInterface 实例以进行查询. yii\db\ActiveRecordInterface
findAll() 返回与指定的主键值或一组列值匹配的活动记录模型的列表. yii\db\BaseActiveRecord
findOne() 通过主键或列值的数组返回单个活动记录模型实例. yii\db\BaseActiveRecord
formName() 返回此模型类应使用的表单名称. yii\base\Model
generateAttributeLabel() 基于给定的属性名称生成用户友好的属性标签. yii\base\Model
getActiveValidators() 返回适用于当前 场景 的验证器. yii\base\Model
getAttribute() 返回指定的属性值. yii\db\BaseActiveRecord
getAttributeHint() 返回指定属性的文本提示. yii\db\BaseActiveRecord
getAttributeLabel() 返回指定属性的文本标签. yii\db\BaseActiveRecord
getAttributes() 返回属性值. yii\base\Model
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
getDb() 返回此 AR 类使用的连接. yii\db\ActiveRecordInterface
getDirtyAttributes() 返回自最后一次加载或保存以来修改的属性值. yii\db\BaseActiveRecord
getErrorSummary() 将所有属性的错误作为一维数组返回. yii\base\Model
getErrors() 返回所有属性或单个属性的错误. yii\base\Model
getFirstError() 返回指定属性的第一个错误. yii\base\Model
getFirstErrors() 返回模型中每个属性的第一个错误. yii\base\Model
getIsNewRecord() 返回一个值, 指示当前记录是否是新记录. yii\db\BaseActiveRecord
getIterator() 返回用于遍历模型中属性的迭代器. yii\base\Model
getOldAttribute() 返回指定属性的旧值. yii\db\BaseActiveRecord
getOldAttributes() 返回旧的属性值. yii\db\BaseActiveRecord
getOldPrimaryKey() 返回旧的主键值. yii\db\BaseActiveRecord
getPrimaryKey() 返回主键值. yii\db\BaseActiveRecord
getRelatedRecords() 返回所有已填充的相关记录. yii\db\BaseActiveRecord
getRelation() 返回具有指定名称的关系对象. yii\db\BaseActiveRecord
getScenario() 返回此模型使用的场景. yii\base\Model
getValidators() 返回在 rules() 中声明的所有验证器. yii\base\Model
hasAttribute() 返回一个值, 该值指示模型是否具有指定名称的属性. yii\db\BaseActiveRecord
hasErrors() 返回一个值, 指示是否存在任何验证错误. yii\base\Model
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMany() 声明一个has-many 关系. yii\db\BaseActiveRecord
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasOne() 声明一个has-one关系. yii\db\BaseActiveRecord
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() 初始化对象. yii\db\BaseActiveRecord
insert() 使用该记录的属性值将记录插入数据库. yii\db\ActiveRecordInterface
instance() 返回静态类实例, 该实例可用于获取元信息(meta). yii\base\StaticInstanceTrait
instantiate() 创建活动记录实例. yii\db\BaseActiveRecord
isAttributeActive() 返回一个值, 指示该属性在当前场景中是否处于活动状态. yii\base\Model
isAttributeChanged() 返回一个值, 指示指定的属性是否已更改. yii\db\BaseActiveRecord
isAttributeRequired() 返回一个值, 指示该属性是否是必需的. yii\base\Model
isAttributeSafe() 返回一个值, 指示属性对于大规模分配是否安全. yii\base\Model
isPrimaryKey() 返回一个值, 该值指示给定的属性集是否表示此模型的主键. yii\db\BaseActiveRecord
isRelationPopulated() 检查指定的关系是否已填充记录. yii\db\BaseActiveRecord
link() 建立两个模型之间的关系. yii\db\BaseActiveRecord
load() 用输入数据填充模型. yii\base\Model
loadMultiple() 使用来自最终用户的数据填充一组模型. yii\base\Model
markAttributeDirty() 销毁旧的属性. yii\db\BaseActiveRecord
off() 从该组件分离现有的事件处理程序. yii\base\Component
offsetExists() 返回是否在指定的偏移量处有一个元素. yii\db\BaseActiveRecord
offsetGet() 返回指定偏移量处的元素. yii\base\Model
offsetSet() 将元素设置为指定的偏移量. yii\base\Model
offsetUnset() 将指定偏移处的元素值设置为null. yii\db\BaseActiveRecord
on() 将事件处理程序附加到事件. yii\base\Component
onUnsafeAttribute() 当大规模(批量)分配不安全属性时, 将调用此方法. yii\base\Model
optimisticLock() Returns the name of the column that stores the lock version for implementing optimistic locking. yii\db\BaseActiveRecord
populateRecord() 使用数据库/存储中的一行数据填充活动的记录对象. yii\db\BaseActiveRecord
populateRelation() 用相关的记录填充指定的关系. yii\db\BaseActiveRecord
primaryKey() 返回此 AR 类的主键名称. yii\db\ActiveRecordInterface
refresh() 用最新数据重新填充此活动记录. yii\db\BaseActiveRecord
rules() 返回属性的验证规则. yii\base\Model
safeAttributes() 返回在当前场景中可安全分配的属性名称. yii\base\Model
save() 保存当前记录. yii\db\BaseActiveRecord
scenarios() 返回场景列表和相应的活动属性. yii\base\Model
setAttribute() 设置指定的属性值. yii\db\BaseActiveRecord
setAttributes() 以大规模(批量)的方式设置属性值. yii\base\Model
setIsNewRecord() 设置指示记录是否为新的值. yii\db\BaseActiveRecord
setOldAttribute() 设置指定属性的旧值. yii\db\BaseActiveRecord
setOldAttributes() 设置旧的属性值. yii\db\BaseActiveRecord
setScenario() 设置模型的场景. yii\base\Model
toArray() 将模型转换为数组. yii\base\ArrayableTrait
trigger() 触发事件. yii\base\Component
unlink() 销毁两个模型之间的关系. yii\db\BaseActiveRecord
unlinkAll() 销毁当前模型中的关系. yii\db\BaseActiveRecord
update() 将对此活动记录的更改保存到关联的数据库表中. yii\db\BaseActiveRecord
updateAll() 使用提供的属性值和条件更新整个表. yii\db\BaseActiveRecord
updateAllCounters() 使用提供的计数器更改和条件更新整个表. yii\db\BaseActiveRecord
updateAttributes() 更新指定的属性. yii\db\BaseActiveRecord
updateCounters() 更新当前 AR 对象的一个或多个计数器列. yii\db\BaseActiveRecord
validate() 执行数据验证. yii\base\Model
validateMultiple() 验证多个模型. yii\base\Model

受保护的方法

隐藏继承的方法

方法描述定义在
createRelationQuery() has-onehas-many关系创建一个查询实例. yii\db\BaseActiveRecord
extractFieldsFor() 从给定根字段的字段集合中提取嵌套字段. yii\base\ArrayableTrait
extractRootFields() 从嵌套字段中提取根字段名称. yii\base\ArrayableTrait
findByCondition() 根据给定条件查找 ActiveRecord 实例. yii\db\BaseActiveRecord
refreshInternal() 使用来自新获取的实例的最新数据重写填充此活动记录. yii\db\BaseActiveRecord
resolveFields() 确定 toArray() 可以返回哪些字段. yii\base\ArrayableTrait
updateInternal() yii\db\BaseActiveRecord

事件

隐藏继承的事件

事件类型描述定义在
EVENT_AFTER_DELETE \yii\db\Event 在记录被删除后触发的事件. yii\db\BaseActiveRecord
EVENT_AFTER_FIND \yii\db\Event 创建记录并使用查询结果填充记录后触发的事件. yii\db\BaseActiveRecord
EVENT_AFTER_INSERT yii\db\AfterSaveEvent 在插入记录后触发的事件. yii\db\BaseActiveRecord
EVENT_AFTER_REFRESH \yii\db\Event 在刷新记录后触发的事件. (available since version 2.0.8) yii\db\BaseActiveRecord
EVENT_AFTER_UPDATE yii\db\AfterSaveEvent 在记录更新后触发的事件. yii\db\BaseActiveRecord
EVENT_AFTER_VALIDATE yii\base\Event validate() 结尾处触发的事件. yii\base\Model
EVENT_BEFORE_DELETE yii\base\ModelEvent 在删除记录之前触发的事件. yii\db\BaseActiveRecord
EVENT_BEFORE_INSERT yii\base\ModelEvent 在插入记录之前触发的事件. yii\db\BaseActiveRecord
EVENT_BEFORE_UPDATE yii\base\ModelEvent 在更新记录之前触发的事件. yii\db\BaseActiveRecord
EVENT_BEFORE_VALIDATE yii\base\ModelEvent validate() 开始时触发的事件. yii\base\Model
EVENT_INIT \yii\db\Event 通过 init() 初始化记录时触发的事件. yii\db\BaseActiveRecord

常量

隐藏继承的常量

常量描述定义在
SCENARIO_DEFAULT 'default' 默认场景的名称. yii\base\Model

属性详情

$dirtyAttributes public 属性

已更改的属性值(name-value 对). 该属性是只读的.

public array $dirtyAttributes null
$isNewRecord public 属性

记录是否为新记录, 是否应在调用 save() 时插入.

public boolean $isNewRecord null
$oldAttributes public 属性

旧的属性值(name-value 对). 请注意, 该属性的类型在 getter 和 setter 中有所不同. 有关详细信息, 请参阅 getOldAttributes()setOldAttributes().

public array $oldAttributes null
$oldPrimaryKey public 属性

旧的主键值.如果主键是复合的, 则返回数组(列名=>列值). 否则返回一个字符串(如果键值为空则返回null). 该属性是只读的.

public mixed $oldPrimaryKey null
$primaryKey public 属性

主键值. 如果主键是复合的, 则返回数组(列名=>列值). 否则返回一个字符串(如果键值为空则返回null). 该属性是只读的.

public mixed $primaryKey null
$relatedRecords public 属性

由关系名称索引的相关记录的数组. 该属性是只读的.

public array $relatedRecords null

方法详情

__get() public 方法

PHP getter 魔术方法.

重写该方法, 以便可以像属性一样访问属性和相关对象.

参见 getAttribute().

public mixed __get ( $name )
$name string

属性名称.

return mixed

属性值.

throws yii\base\InvalidArgumentException

如果关系名称错误.

__isset() public 方法

检查属性值是否为null.

该方法通过检查指定属性是否为null来覆盖父实现.

public boolean __isset ( $name )
$name string

属性名称或事件名称.

return boolean

属性值是否为null.

__set() public 方法

PHP setter 魔术方法.

重写该方法, 以便可以像属性一样访问 AR 属性.

public void __set ( $name, $value )
$name string

属性名称.

$value mixed

属性值.

__unset() public 方法

将组件属性设置为null.

此方法通过清除指定的属性值来覆盖父实现.

public void __unset ( $name )
$name string

属性名称或事件名称.

afterDelete() public 方法

删除记录后调用此方法.

默认实现引发 EVENT_AFTER_DELETE 事件. 删除记录后, 你可以覆盖此方法以进行后续处理. 确保调用父实现, 以使正确引发事件.

public void afterDelete ( )
afterFind() public 方法

当创建 AR 对象并使用查询结果填充该对象时, 将调用此方法.

默认实现将触发 EVENT_AFTER_FIND 事件. 重写此方法时, 请确保调用父实现以确保事件被触发.

public void afterFind ( )
afterRefresh() public 方法 (可用自版本: 2.0.8)

刷新 AR 对象后将调用此方法.

默认实现将触发 EVENT_AFTER_REFRESH 事件. 重写此方法时, 请确保你调用父级实现, 以确保事件被触发.

public void afterRefresh ( )
afterSave() public 方法

在插入或更新记录结束时调用此方法.

$inserttrue时, 默认实现将触发 EVENT_AFTER_INSERT 事件, 如果$insertfalse则将触发 EVENT_AFTER_UPDATE 事件. 使用的事件类是 yii\db\AfterSaveEvent. 重写此方法时, 请确保调用父实现, 以便触发事件.

public void afterSave ( $insert, $changedAttributes )
$insert boolean

是否插入记录时调用此方法. 如果为false, 则表示在更新记录时调用此方法.

$changedAttributes array

已更改并保存的属性的旧值. 你可以使用此参数根据所做更改采取措施, 例如在密码更改后发送电子邮件或执行跟踪所有更改的审计跟踪. $changedAttributes给你旧的属性值, 而活动记录($this)已经有了新的更新值.

Note: 默认情况下, 不执行任何自动类型转换. 你可以使用 yii\behaviors\AttributeTypecastBehavior 来简化属性类型转换. See http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#attributes-typecasting.

beforeDelete() public 方法

在删除记录之前调用此方法.

默认的实现引发了 EVENT_BEFORE_DELETE 事件. 重写此方法时, 请确保你调用父级实现, 如下所示:

public function beforeDelete()
{
    if (!parent::beforeDelete()) {
        return false;
    }

    // ...自定义代码在这里...
    return true;
}
public boolean beforeDelete ( )
return boolean

是否删除记录. 默认为true.

beforeSave() public 方法

在插入或更新记录的开始即调用此方法.

$inserttrue时, 默认实现将触发 EVENT_BEFORE_INSERT 事件, 如果$insertfalse则将触发 EVENT_BEFORE_UPDATE 事件. 重写此方法时, 请确保你调用父级实现, 如下所示:

public function beforeSave($insert)
{
    if (!parent::beforeSave($insert)) {
        return false;
    }

    // ...自定义代码在这里...
    return true;
}
public boolean beforeSave ( $insert )
$insert boolean

是否插入记录时调用此方法. 如果为false, 则表示在更新记录时调用此方法.

return boolean

是否应继续插入或更新. 如果为false, 则将取消插入或更新.

canGetProperty() public 方法

返回一个值, 指示属性是否可读取.

在以下情况下, 属性是可读的:

  • 该类具有与指定名称相关联的getter方法(在这种情况下, 属性名称不区分大小写);
  • 该类有一个具有指定名称的成员变量(当$checkVarstrue时);
  • 附加行为具有指定名称的可读属性(当$checkBehaviorstrue时).
public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

属性名称.

$checkVars boolean

是否将成员变量视为属性.

$checkBehaviors boolean

是否将行为的属性视为该组件的属性.

return boolean

属性是否可读取.

canSetProperty() public 方法

返回一个值, 指示属性是否可设置.

在以下情况下, 属性是可设置的:

  • 该类具有与指定名称相关联的setter方法(在这种情况下, 属性名称不区分大小写);
  • 该类有一个具有指定名称的成员变量(当$checkVarstrue时);
  • 附加行为具有指定名称的可写属性(当$checkBehaviorstrue时).
public boolean canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

属性名称.

$checkVars boolean

是否将成员变量视为属性.

$checkBehaviors boolean

是否将行为的属性视为该组件的属性.

return boolean

方法是否可设置.

createRelationQuery() protected 方法 (可用自版本: 2.0.12)

has-onehas-many关系创建一个查询实例.

参见:

protected yii\db\ActiveQueryInterface createRelationQuery ( $class, $link, $multiple )
$class string

相关记录的类名..

$link array

主 - 外键约束.

$multiple boolean

此查询是否表示与多个记录的关系.

return yii\db\ActiveQueryInterface

关系查询对象.

delete() public 方法

删除与此活动记录对应的表格行.

此方法按顺序执行以下步骤:

  1. 调用 beforeDelete(). 如果该方法返回false, 它将跳过其余的步骤;
  2. 从数据库中删除记录;
  3. 调用 afterDelete().

在上述步骤1,2,3和5中, 将通过相应的方法引发事件 EVENT_BEFORE_DELETEEVENT_AFTER_DELETE.

public integer|false delete ( )
return integer|false

删除的行数, 如果由于某种原因删除失败, 则返回false.

Note: 即使删除执行成功, 删除的行数也可能是0.

throws yii\db\StaleObjectException

如果启用 optimistic locking, 并且要删除的数据已过期.

throws yii\db\Exception

如果删除失败.

deleteAll() public static 方法

使用提供的条件删除表中的行.

Warning: 如果不指定任何条件, 则此方法将更新表中的所有行.

例如, 要删除状态为3的所有客户:

Customer::deleteAll('status = 3');
public static integer deleteAll ( $condition null )
$condition string|array

将放在 DELETE SQL 的 WHERE 部分中的条件. 有关如何指定此参数, 请参阅 findOne().

return integer

删除的行数.

throws yii\base\NotSupportedException

如果不重写.

equals() public 方法

返回一个值, 该值指示给定的活动记录是否与当前记录相同.

通过比较两个活动记录的表名和主键值进行比较. 如果其中一个记录 is new, 则它们也被视为不相等.

public boolean equals ( $record )
$record yii\db\ActiveRecordInterface

要进行比较的记录.

return boolean

两个活动记录是否引用同一个数据库表中的同一行.

extraFields() public 方法

返回可以进一步扩展并由 toArray() 返回的字段列表.

默认实现返回已填充到此记录中的关系的名称.

该方法类似于 fields(), 但默认情况下 toArray() 不返回此方法返回的字段列表. 只有在调用 toArray() 时显式指定要扩展的字段名称时, 才会输出它们的值.

默认实现返回一个空数组.

你可以重写此方法, 以根据某些上下文信息(eg. 当前应用程序用户)返回可扩展字段的列表.

public array extraFields ( )
return array

可扩展字段名称或字段定义的列表. 返回值的格式请参考的 fields().

fields() public 方法

返回当未指定任何特定字段时, 默认应由 toArray() 返回的字段列表.

默认实现返回其值已填充到此记录中的列的名称.

字段是 toArray() 在返回数组中的已命名元素.

此方法应该返回一个字段名称或字段定义的数组. 如果是前者, 则字段名称将被视为对象属性名称, 其值将用作字段值. 如果是后者, 则数组键应该是字段名称, 而数组值应该是相应的字段定义, 它可以是对象属性名称或返回相应字段值的 PHP 可调用. 可调用的签名应该是:

function ($model, $field) {
    // 返回字段值
}

例如, 以下代码声明了四个字段:

  • email: 字段名称与属性名称email相同;
  • firstNamelastName: 字段名称为firstNamelastName, 它们的值是从first_namelast_name属性获取的;
  • fullName: 字段名称为fullName. 它的值是通过连接first_namelast_name获得的.
return [
    'email',
    'firstName' => 'first_name',
    'lastName' => 'last_name',
    'fullName' => function ($model) {
        return $model->first_name . ' ' . $model->last_name;
    },
];

在这种方法中, 你可能还想根据某些上下文信息返回不同的字段列表. 例如, 根据 场景 或当前应用程序用户的权限, 你可能会返回不同的可见字段集或过滤掉某些字段.

此方法的默认实现返回由相同属性名称索引的 attributes().

public array fields ( )
return array

字段名称或字段定义的列表.

findAll() public static 方法

返回与指定的主键值或一组列值匹配的活动记录模型的列表.

该方法接收:

  • 标量值(整数或字符串): 通过单个主键值查询并返回包含相应记录的数组(如果未找到, 则返回空数组).
  • 非关联数组: 通过主键值列表进行查询并返回相应的记录(如果未找到, 则返回空数组).

    Note: 空条件将导致空结果, 因为它将被解释为对主键的搜索而不是空的WHERE条件.

  • name-value 对的关联数组: 按一组属性值查询并返回与所有属性值匹配的记录的数组(如果未找到, 则返回空数组). 请注意['id' => 1, 2]被视为非关联数组. 列名仅限于 SQL DBMS 的当前记录表列, 或者进行过滤以限制为简单过滤条件.
  • a yii\db\Expression: 该表达式将直接使用. (@since 2.0.37)

该方法将自动调用all()方法并返回 ActiveRecord 实例的数组.

Note: 由于这只是一个简写方法, 因此无法使用更复杂的条件, 例如['!=', 'id', 1]. 如果需要指定更复杂的条件, 请与 where() 结合使用 find().

有关用法示例, 请参阅以下代码:

// 查询主键值为10的用户(customers):
$customers = Customer::findAll(10);

// 上面的代码相当于:
$customers = Customer::find()->where(['id' => 10])->all();

// 查询主键值为10,11或12的用户(customers):
$customers = Customer::findAll([10, 11, 12]);

// 上面的代码相当于:
$customers = Customer::find()->where(['id' => [10, 11, 12]])->all();

// 查询年龄为30岁, status为1的用户(customers):
$customers = Customer::findAll(['age' => 30, 'status' => 1]);

// 上面的代码相当于:
$customers = Customer::find()->where(['age' => 30, 'status' => 1])->all();

如果需要将用户输入传递给此方法, 请确保输入值为标量, 或在数组条件下, 请确保不能从外部更改数组结构:

// yii\web\Controller 确保 $id 为标量值
public function actionView($id)
{
    $model = Post::findOne($id);
    // ...
}

// 明确指定要搜索的列, 在此处传递标量或数组将始终导致查找单个记录
$model = Post::findOne(['id' => Yii::$app->request->get('id')]);

// 不要使用以下代码! 可以注入数组条件以按任意列值进行过滤!
$model = Post::findOne(Yii::$app->request->get('id'));
public static static[] findAll ( $condition )
$condition mixed

主键值或一组列值.

return static[]

一个 ActiveRecord 实例数组, 如果没有匹配项, 则返回一个空数组.

findByCondition() protected static 方法

根据给定条件查找 ActiveRecord 实例.

findOne()findAll() 在内部调用此方法.

protected static yii\db\ActiveQueryInterface findByCondition ( $condition )
$condition mixed

有关此参数的说明, 请参阅 findOne().

return yii\db\ActiveQueryInterface

新创建的 ActiveQuery 实例.

throws yii\base\InvalidConfigException

如果没有定义主键.

findOne() public static 方法

通过主键或列值的数组返回单个活动记录模型实例.

该方法接收:

  • 标量值(整数或字符串): 通过单个主键值查询并返回相应的记录(如果未找到则为null).
  • 非关联数组: 通过主键值列表进行查询并返回第一条记录(如果未找到则为null).
  • name-value 对的关联数组: 按一组属性值进行查询, 并返回与所有属性值匹配的单个记录(如果未找到则为null). 请注意, ['id' => 1, 2]被视为非关联数组.
  • a yii\db\Expression: 该表达式将直接使用. (@since 2.0.37)

该方法将自动调用one()方法并返回 ActiveRecord 实例.

Note: 由于这只是一个简写方法, 因此无法使用更复杂的条件, 例如['!=', 'id', 1]. 如果需要指定更复杂的条件, 请与 where() 结合使用 find().

有关用法示例, 请参阅以下代码:

// 查询主键值为10的单个用户(customer):
$customer = Customer::findOne(10);

// 上面的代码相当于:
$customer = Customer::find()->where(['id' => 10])->one();

// 查询主键值为10,11或12的用户(customers):
$customers = Customer::findOne([10, 11, 12]);

// 上面的代码相当于:
$customers = Customer::find()->where(['id' => [10, 11, 12]])->one();

// 查询年龄为30岁, status为1的第一个用户(customer):
$customer = Customer::findOne(['age' => 30, 'status' => 1]);

// 上面的代码相当于:
$customer = Customer::find()->where(['age' => 30, 'status' => 1])->one();

如果需要将用户输入传递给此方法, 请确保输入值为标量, 或在数组条件下, 请确保不能从外部更改数组结构:

// yii\web\Controller 确保 $id 为标量值
public function actionView($id)
{
    $model = Post::findOne($id);
    // ...
}

// 明确指定要搜索的列, 在此处传递标量或数组将始终导致查找单个记录
$model = Post::findOne(['id' => Yii::$app->request->get('id')]);

// 不要使用以下代码! 可以注入数组条件以按任意列值进行过滤!
$model = Post::findOne(Yii::$app->request->get('id'));
public static static|null findOne ( $condition )
$condition mixed

主键值或一组列值.

return static|null

符合条件的 ActiveRecord 实例, 如果没有匹配项, 则返回null.

getAttribute() public 方法

返回指定的属性值.

如果该记录是一个查询的结果, 并且未加载该属性, 则将返回null.

参见 hasAttribute().

public mixed getAttribute ( $name )
$name string

属性的名称.

return mixed

属性的值. 如果属性未设置或不存在, 则返回null.

getAttributeHint() public 方法 (可用自版本: 2.0.4)

返回指定属性的文本提示.

如果该属性看起来像relatedModel.attribute, 那么将从相关模型接收该属性.

参见 attributeHints().

public string getAttributeHint ( $attribute )
$attribute string

属性的名称.

return string

属性的文本提示.

getAttributeLabel() public 方法

返回指定属性的文本标签.

如果该属性看起来像relatedModel.attribute, 那么将从相关模型接收该属性.

参见:

public string getAttributeLabel ( $attribute )
$attribute string

属性的名称.

return string

属性的文本标签.

getDirtyAttributes() public 方法

返回自最后一次加载或保存以来修改的属性值.

使用===对新值和旧值进行比较.

public array getDirtyAttributes ( $names null )
$names string[]|null

属性的名称, 如果最近更改其值, 则可以返回它们的值. 如果为null, 将使用attributes().

return array

已更改的属性值(name-value 对).

getIsNewRecord() public 方法

返回一个值, 指示当前记录是否是新记录.

public boolean getIsNewRecord ( )
return boolean

记录是否是新记录, 是否应在调用 save() 时插入.

getOldAttribute() public 方法

返回指定属性的旧值.

如果该记录是一个查询的结果, 并且未加载该属性, 则将返回null.

参见 hasAttribute().

public mixed getOldAttribute ( $name )
$name string

属性的名称.

return mixed

旧的属性值. 如果该属性未加载或不存在, 则返回null.

getOldAttributes() public 方法

返回旧的属性值.

public array getOldAttributes ( )
return array

旧的属性值(name-value 对).

getOldPrimaryKey() public 方法

返回旧的主键值.

这是指执行 find 方法(eg. find(), findOne())后填充到记录中的主键值. 即使手动为主键属性分配了不同的值, 该值仍保持不变.

public mixed getOldPrimaryKey ( $asArray false )
$asArray boolean

是否以数组形式返回主键值. 如果为true, 则返回值将是一个数组, 其列名称作为键, 列值作为值. 如果为false(默认值), 则将为非复合主键返回一个标量值.

return mixed

旧的主键值. 如果主键是复合键或$asArraytrue, 则返回数组(列名=>列值). 否则返回一个字符串(如果键值为空, 则返回null).

throws yii\db\Exception

如果 AR 模型没有主键.

getPrimaryKey() public 方法

返回主键值.

public mixed getPrimaryKey ( $asArray false )
$asArray boolean

是否以数组形式返回主键值. 如果为true, 则返回值将是一个数组, 其列名作为键, 列值作为值.

Note: 对于复合主键, 无论此参数值如何, 都将始终返回数组.

return mixed

主键值. 如果主键是复合键或$asArraytrue, 则返回数组(列名=>列值). 否则返回一个字符串(如果键值为空, 则返回null).

getRelatedRecords() public 方法

返回所有已填充的相关记录.

参见 getRelation().

public array getRelatedRecords ( )
return array

由关系名称索引的相关记录的数组.

getRelation() public 方法

返回具有指定名称的关系对象.

通过 getter 方法定义一个关系, 该方法将返回一个实现 yii\db\ActiveQueryInterface 的对象. 可以在 ActiveRecord 类本身或其行为之一中声明.

public yii\db\ActiveQueryInterface|yii\db\ActiveQuery getRelation ( $name, $throwException true )
$name string

关系的名称, eg. 通过getOrders()方法定义的关系orders(区分大小写).

$throwException boolean

如果该关系不存在, 是否抛出异常.

return yii\db\ActiveQueryInterface|yii\db\ActiveQuery

关系查询对象. 如果该关系不存在, 并且$throwExceptionfalse, 则将返回null.

throws yii\base\InvalidArgumentException

如果指定的关系不存在.

hasAttribute() public 方法

返回一个值, 该值指示模型是否具有指定名称的属性.

public boolean hasAttribute ( $name )
$name string

属性的名称.

return boolean

模型是否具有指定名称的属性.

hasMany() public 方法

声明一个has-many 关系.

根据关系 yii\db\ActiveQuery 实例返回该声明, 通过该实例可以查询和检索相关记录.

has-many关系意味着存在多个与此记录设定的标准相匹配的相关记录, 例如, 一个客户有很多订单.

例如, 为了声明Customer类的orders关系, 我们可以在Customer类中写下如下的代码:

public function getOrders()
{
    return $this->hasMany(Order::className(), ['customer_id' => 'id']);
}

Note: 在上面的例子中, $link参数中的customer_id键指的是相关类Order中的属性名, 而id指的是当前 AR 类中的属性名.

调用 yii\db\ActiveQuery 中声明的方法来进一步自定义关系.

public yii\db\ActiveQueryInterface hasMany ( $class, $link )
$class string

相关记录的类名.

$link array

主 - 外键约束. 数组的键是指与$class模型相关的记录的属性, 而数组的值是指这个 AR 类中的相应属性.

return yii\db\ActiveQueryInterface

关系查询对象.

hasOne() public 方法

声明一个has-one关系.

根据关系 yii\db\ActiveQuery 实例返回该声明, 通过该实例可以查询和检索相关记录.

has-one关系意味着至多有一个相关记录与该关系设定的标准相匹配, 例如, 客户有一个国家.

例如, 要声明Customer类的country关系, 我们可以在Customer类中写下如下的代码:

public function getCountry()
{
    return $this->hasOne(Country::className(), ['id' => 'country_id']);
}

Note: 在上面的例子中, $link参数中的id键指的是相关类Country中的属性名, 而country_id指的是当前 AR 类中的属性名.

调用 yii\db\ActiveQuery 中声明的方法来进一步自定义关系.

public yii\db\ActiveQueryInterface hasOne ( $class, $link )
$class string

相关记录的类名.

$link array

主 - 外键约束. 数组的键是指与$class模型相关的记录的属性, 而数组的值是指这个 AR 类中的相应属性.

return yii\db\ActiveQueryInterface

关系查询对象.

init() public 方法

初始化对象.

此方法在构造函数的末尾调用. 默认实现将触发 EVENT_INIT 事件.

public void init ( )
instantiate() public static 方法

创建活动记录实例.

yii\db\ActiveQuery populateRecord() 一起调用此方法. 它不能直接用于创建新记录.

如果正在创建的实例取决于要填充到记录中的行数据, 则可以重写此方法. 例如, 通过基于列的值创建记录, 你可以实现所谓的单表继承映射.

public static static instantiate ( $row )
$row array

奥填充到记录中的行数据.

return static

新创建的活动记录.

isAttributeChanged() public 方法

返回一个值, 指示指定的属性是否已更改.

public boolean isAttributeChanged ( $name, $identical true )
$name string

属性的名称.

$identical boolean

是否使用===对相同的值进行新值和旧值的比较, 默认为true. 将否则使用==进行比较. 该参数从版本2.0.4起可用.

return boolean

该属性是否已更改.

isPrimaryKey() public static 方法

返回一个值, 该值指示给定的属性集是否表示此模型的主键.

public static boolean isPrimaryKey ( $keys )
$keys array

要检查的属性集.

return boolean

给定的属性集是否表示此模型的主键.

isRelationPopulated() public 方法

检查指定的关系是否已填充记录.

参见 getRelation().

public boolean isRelationPopulated ( $name )
$name string

关系的名称, eg. 通过getOrders()方法定义的关系orders(区分大小写).

return boolean

关系是否已填充记录.

link() public 方法

建立两个模型之间的关系.

通过将一个模型中的外键值设置为另一个模型中的对应主键值来建立关系. 具有外键的模型将被保存到数据库中, 而不执行验证.

如果关系涉及到连接表, 则将在连接表中插入新行, 其中包含来自两个模型的主键值.

Note: 此方法要求主键值不为null.

public void link ( $name, $model, $extraColumns = [] )
$name string

该关系的名称(区分大小写), eg. 通过getOrders()方法定义的关系orders.

$model yii\db\ActiveRecordInterface

与当前模型的连接的模型.

$extraColumns array

将额外的列值保存到连接表中. 此参数仅对于涉及连接表(即使用 yii\db\ActiveRelationTrait::via()yii\db\ActiveQuery::viaTable() 设置的关系)的关系有意义.

throws yii\base\InvalidCallException

如果该方法无法连接两个模型.

markAttributeDirty() public 方法

销毁旧的属性.

即使未对记录进行任何更改, 也可以在调用 update() 时调用此方法以强制更新记录.

public void markAttributeDirty ( $name )
$name string

属性的名称.

offsetExists() public 方法

返回是否在指定的偏移量处有一个元素.

接口 ArrayAccess 需要此方法.

public boolean offsetExists ( $offset )
$offset mixed

要检查的偏移量.

return boolean

是否在指定的偏移量处有一个元素.

offsetUnset() public 方法

将指定偏移处的元素值设置为null.

SPL接口 ArrayAccess 需要此方法. 当你使用unset($model[$offset])时, 它被隐式地调用.

public void offsetUnset ( $offset )
$offset mixed

未设置元素的偏移量.

optimisticLock() public 方法

Returns the name of the column that stores the lock version for implementing optimistic locking.

Optimistic locking allows multiple users to access the same record for edits and avoids potential conflicts. In case when a user attempts to save the record upon some staled data (because another user has modified the data), a yii\db\StaleObjectException exception will be thrown, and the update or deletion is skipped.

Optimistic locking is only supported by update() and delete().

To use Optimistic locking:

  1. Create a column to store the version number of each row. The column type should be BIGINT DEFAULT 0. Override this method to return the name of this column.
  2. Ensure the version value is submitted and loaded to your model before any update or delete. Or add OptimisticLockBehavior to your model class in order to automate the process.
  3. In the Web form that collects the user input, add a hidden field that stores the lock version of the recording being updated.
  4. In the controller action that does the data updating, try to catch the yii\db\StaleObjectException and implement necessary business logic (e.g. merging the changes, prompting stated data) to resolve the conflict.
public string optimisticLock ( )
return string

The column name that stores the lock version of a table row. If null is returned (default implemented), optimistic locking will not be supported.

populateRecord() public static 方法

使用数据库/存储中的一行数据填充活动的记录对象.

这是一种内部方法, 在从数据库中获取数据后将被调用以创建活动记录对象. yii\db\ActiveQuery 主要使用它来将查询结果填充到活动记录中.

当手动调用此方法时, 你应该在创建的记录上调用 afterFind() 来触发 afterFind 事件.

public static void populateRecord ( $record, $row )
$record yii\db\BaseActiveRecord

要填充的记录. 在大多数情况下, 这将是 instantiate() 事先创建的实例.

$row array

属性的值(name => value).

populateRelation() public 方法

用相关的记录填充指定的关系.

Note: 该方法不检查关系是否存在.

参见 getRelation().

public void populateRelation ( $name, $records )
$name string

关系的名称, eg. 通过getOrders()方法定义的关系orders(区分大小写).

$records yii\db\ActiveRecordInterface|array|null

要填充到关系中的相关记录.

refresh() public 方法

用最新数据重新填充此活动记录.

如果刷新成功, 将触发 EVENT_AFTER_REFRESH 事件. 此事件自版本2.0.8起可用.

public boolean refresh ( )
return boolean

该行是否仍存在于数据库中. 如果为true, 则将最新数据填充到此活动记录中. 否则, 此记录将保持不变.

refreshInternal() protected 方法 (可用自版本: 2.0.13)

使用来自新获取的实例的最新数据重写填充此活动记录.

参见 refresh().

protected boolean refreshInternal ( $record )
$record yii\db\BaseActiveRecord

从中获取属性的记录.

return boolean

刷新是否成功.

save() public 方法

保存当前记录.

$isNewRecordtrue时, 此方法将调用 insert(). $isNewRecordfalse时, 此方法将调用 update().

例如, 要保存客户记录:

$customer = new Customer; // or $customer = Customer::findOne($id);
$customer->name = $name;
$customer->email = $email;
$customer->save();
public boolean save ( $runValidation true, $attributeNames null )
$runValidation boolean

在保存记录之前是否执行验证(调用 validate()). 默认为true. 如果验证失败, 则记录将不会保存到数据库, 并且此方法将返回false.

$attributeNames array

需要保存的属性列表. 默认为null, 表示从 DB 加载的所有属性都将被保存.

return boolean

是否保存成功(即未发生验证错误).

setAttribute() public 方法

设置指定的属性值.

参见 hasAttribute().

public void setAttribute ( $name, $value )
$name string

属性的名称.

$value mixed

属性的值.

throws yii\base\InvalidArgumentException

如果指定的属性不存在.

setIsNewRecord() public 方法

设置指示记录是否为新的值.

参见 getIsNewRecord().

public void setIsNewRecord ( $value )
$value boolean

记录是否是新记录, 是否应在调用 save() 时插入.

setOldAttribute() public 方法

设置指定属性的旧值.

参见 hasAttribute().

public void setOldAttribute ( $name, $value )
$name string

属性的名称.

$value mixed

旧的属性值.

throws yii\base\InvalidArgumentException

如果指定的属性不存在.

setOldAttributes() public 方法

设置旧的属性值.

所有现有的旧属性值将被丢弃.

public void setOldAttributes ( $values )
$values array|null

要设置的旧的属性值. 如果设置为null, 则该记录被认为是 new.

unlink() public 方法

销毁两个模型之间的关系.

如果$deletetrue, 则具有该关系的外键的模型将被删除. 否则, 外键将被设置为null, 并且将保存模型而不进行验证.

public void unlink ( $name, $model, $delete false )
$name string

该关系的名称(区分大小写), eg. 通过getOrders()方法定义的关系orders.

$model yii\db\ActiveRecordInterface

与当前的模型取消连接的模型. 你必须确保模型与当前模型真正相关, 因为此方法不会对此进行检查.

$delete boolean

是否删除包含外键的模型. 如果为false, 则模型的外键将被设置为null并保存. 如果为true, 则包含外键的模型将被删除.

throws yii\base\InvalidCallException

如果无法解除连接模型.

unlinkAll() public 方法

销毁当前模型中的关系.

如果$deletetrue, 则具有关系的外键的模型将被删除. 否则, 外键将被设置为null, 并且将保存模型而不进行验证.

Note: 在不删除记录的情况下销毁关系, 请确保可以将键设置为null.

public void unlinkAll ( $name, $delete false )
$name string

该关系的名称(区分大小写), eg. 通过getOrders()方法定义的关系orders.

$delete boolean

是否删除包含外键的模型.

Note: 删除将使用 deleteAll() 执行, 该操作不会触发相关模型上的任何事件. 如果需要触发 EVENT_BEFORE_DELETEEVENT_AFTER_DELETE, 则需要先 find 每个模型, 然后分别对每个模型调用 delete().

update() public 方法

将对此活动记录的更改保存到关联的数据库表中.

此方法按顺序执行以下步骤:

  1. $runValidationtrue时, 调用 beforeValidate(). 如果 beforeValidate() 返回false, 则将跳过其余步骤;
  2. $runValidationtrue时, 调用 afterValidate(). 如果验证失败, 则将跳过其余步骤;
  3. 调用 beforeSave(). 如果 beforeSave() 返回false, 则将跳过其余步骤;
  4. 将记录保存到数据库中. 如果失败, 则将跳过其余步骤;
  5. 调用 afterSave();

在上述步骤1,2,3和5中, 将通过相应的方法引发事件 EVENT_BEFORE_VALIDATE, EVENT_AFTER_VALIDATE, EVENT_BEFORE_UPDATEEVENT_AFTER_UPDATE.

仅将 已更改的属性值 保存到数据库中.

例如, 要更新客户记录:

$customer = Customer::findOne($id);
$customer->name = $name;
$customer->email = $email;
$customer->update();

Note: 更新可能不会影响表中的任何行. 在这种情况下, 此方法将返回0. 因此, 你应使用以下代码检查 update() 是否成功:

if ($customer->update() !== false) {
    // 更新成功
} else {
    // 更新失败
}
public integer|false update ( $runValidation true, $attributeNames null )
$runValidation boolean

在保存记录之前是否执行验证(调用 validate()). 默认为true. 如果验证失败, 则记录将不会保存到数据库, 并且此方法将返回false.

$attributeNames array

需要保存的属性列表. 默认为null, 表示从 DB 加载的所有属性都将被保存.

return integer|false

受影响的行数, 如果验证失败或者 beforeSave() 停止更新过程, 则为false.

throws yii\db\StaleObjectException

如果启用 optimistic locking 并且正在更新的数据已过期.

throws yii\db\Exception

如果更新失败.

updateAll() public static 方法

使用提供的属性值和条件更新整个表.

例如, 要将状态为2的所有客户的状态更改为1:

Customer::updateAll(['status' => 1], 'status = 2');
public static integer updateAll ( $attributes, $condition '' )
$attributes array

要保存到表中的属性值(name-value 对).

$condition string|array

将放在 UPDATE SQL 的 WHERE 部分中的条件. 有关如何指定此参数, 请参阅 findOne().

return integer

更新的行数.

throws yii\base\NotSupportedException

如果不重写.

updateAllCounters() public static 方法

使用提供的计数器更改和条件更新整个表.

例如, 将所有客户的年龄增加1:

Customer::updateAllCounters(['age' => 1]);
public static integer updateAllCounters ( $counters, $condition '' )
$counters array

要更新的计数器(属性名称=>增量值). 如果要减少计数器, 请使用负值.

$condition string|array

将放在 UPDATE SQL 的 WHERE 部分中的条件. 有关如何指定此参数, 请参阅 findOne().

return integer

更新的行数.

throws yii\base\NotSupportedException

如果不重写.

updateAttributes() public 方法

更新指定的属性.

当不需要数据验证并且只需要更新一小部分属性时, 此方法是 update() 的快捷方式.

你可以将要更新的属性指定为名称列表或 name-value 对. 如果是后者, 则将相应的修改其属性值. 然后该方法将指定的属性保存到数据库中.

Note: 此方法将不会执行数据验证, 也不会触发事件.

public integer updateAttributes ( $attributes )
$attributes array

要更新的属性(名称或 name-value 对).

return integer

受影响的行数.

updateCounters() public 方法

更新当前 AR 对象的一个或多个计数器列.

Note: 此方法与 updateAllCounters() 的不同之处在于, 它仅保存当前 AR 对象的计数器.

示例用法如下:

$post = Post::findOne($id);
$post->updateCounters(['view_count' => 1]);

参见 updateAllCounters().

public boolean updateCounters ( $counters )
$counters array

要更新的计数器(属性名称=>增量值) 如果要减少计数器, 请使用负值.

return boolean

保存是否成功.

updateInternal() protected 方法

参见 update().

protected integer|false updateInternal ( $attributes null )
$attributes array

要更新的属性.

return integer|false

受影响的行数, 如果 beforeSave() 停止更新过程, 则为false.

throws yii\db\StaleObjectException

事件详情

EVENT_AFTER_DELETE 事件类型 \yii\db\Event

在记录被删除后触发的事件.

EVENT_AFTER_FIND 事件类型 \yii\db\Event

创建记录并使用查询结果填充记录后触发的事件.

EVENT_AFTER_INSERT 事件类型 yii\db\AfterSaveEvent

在插入记录后触发的事件.

EVENT_AFTER_REFRESH 事件类型 \yii\db\Event (可用自版本: 2.0.8)

在刷新记录后触发的事件.

EVENT_AFTER_UPDATE 事件类型 yii\db\AfterSaveEvent

在记录更新后触发的事件.

EVENT_BEFORE_DELETE 事件类型 yii\base\ModelEvent

在删除记录之前触发的事件. 你可以将 yii\base\ModelEvent::$isValid 设置为false以停止删除.

EVENT_BEFORE_INSERT 事件类型 yii\base\ModelEvent

在插入记录之前触发的事件. 你可以将 yii\base\ModelEvent::$isValid 设置为false以停止插入.

EVENT_BEFORE_UPDATE 事件类型 yii\base\ModelEvent

在更新记录之前触发的事件. 你可以将 yii\base\ModelEvent::$isValid 设置为false以停止更新.

EVENT_INIT 事件类型 \yii\db\Event

通过 init() 初始化记录时触发的事件.