0 关注者

接口 yii\db\ActiveRecordInterface

扩展yii\base\StaticInstanceInterface
实现于yii\db\ActiveRecord, yii\db\BaseActiveRecord
可用版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/db/ActiveRecordInterface.php

ActiveRecordInterface。

公共方法

隐藏继承方法

方法 描述 定义于
attributes() 返回记录的所有属性名称列表。 yii\db\ActiveRecordInterface
delete() 从数据库中删除记录。 yii\db\ActiveRecordInterface
deleteAll() 使用提供的条件删除记录。 yii\db\ActiveRecordInterface
equals() 返回一个值,指示给定的活动记录是否与当前记录相同。 yii\db\ActiveRecordInterface
find() 为查询目的创建一个 yii\db\ActiveQueryInterface 实例。 yii\db\ActiveRecordInterface
findAll() 返回与指定的primaryKey值或一组列值匹配的活动记录模型列表。 yii\db\ActiveRecordInterface
findOne() 通过主键或一组列值返回单个活动记录模型实例。 yii\db\ActiveRecordInterface
getAttribute() 返回命名的属性值。 yii\db\ActiveRecordInterface
getDb() 返回此AR类使用的连接。 yii\db\ActiveRecordInterface
getIsNewRecord() 返回一个值,指示当前记录是否为新记录(未保存在数据库中)。 yii\db\ActiveRecordInterface
getOldPrimaryKey() 返回旧的主键值。 yii\db\ActiveRecordInterface
getPrimaryKey() 返回主键值。 yii\db\ActiveRecordInterface
getRelation() 返回具有指定名称的关系对象。 yii\db\ActiveRecordInterface
hasAttribute() 返回一个值,指示记录是否具有指定名称的属性。 yii\db\ActiveRecordInterface
insert() 使用此记录的属性值将记录插入数据库。 yii\db\ActiveRecordInterface
instance() 返回静态类实例,可用于获取元信息。 yii\base\StaticInstanceInterface
isPrimaryKey() 返回一个值,指示给定的属性集是否代表此模型的主键。 yii\db\ActiveRecordInterface
link() 建立两条记录之间的关系。 yii\db\ActiveRecordInterface
populateRelation() 使用相关记录填充命名关系。 yii\db\ActiveRecordInterface
primaryKey() 返回此AR类的主键**名称**。 yii\db\ActiveRecordInterface
save() 保存当前记录。 yii\db\ActiveRecordInterface
setAttribute() 设置命名的属性值。 yii\db\ActiveRecordInterface
unlink() 销毁两条记录之间的关系。 yii\db\ActiveRecordInterface
update() 将更改保存到此活动记录到数据库中。 yii\db\ActiveRecordInterface
updateAll() 使用提供的属性值和条件更新记录。 yii\db\ActiveRecordInterface

方法详情

隐藏继承方法

attributes() 公共抽象方法

返回记录的所有属性名称列表。

public abstract array attributes ( )
返回 array

属性名称列表。

                public function attributes();

            
delete() 公共抽象方法

从数据库中删除记录。

public abstract integer|boolean delete ( )
返回 integer|boolean

删除的行数,或者如果由于某种原因删除不成功则返回false。请注意,即使删除执行成功,删除的行数也可能为0。

                public function delete();

            
deleteAll() 公共抽象静态方法

使用提供的条件删除记录。

警告:如果您未指定任何条件,则此方法将删除表中的所有行。

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

Customer::deleteAll([status = 3]);
public abstract static integer deleteAll ( $condition null )
$condition array|null

匹配应删除的记录的条件。请参阅 yii\db\QueryInterface::where() 以了解如何指定此参数。空条件将匹配所有记录。

返回 integer

删除的行数

                public static function deleteAll($condition = null);

            
equals() 公共抽象方法

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

两条记录被认为是不相等的。

public abstract boolean equals ( $record )
$record static

要比较的记录

返回 boolean

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

                public function equals($record);

            
find() 公共抽象静态方法

为查询目的创建一个 yii\db\ActiveQueryInterface 实例。

返回的 yii\db\ActiveQueryInterface 实例可以通过调用 yii\db\ActiveQueryInterface 中定义的方法进一步自定义,然后才能调用one()all() 返回填充的ActiveRecord实例。例如,

// find the customer whose ID is 1
$customer = Customer::find()->where(['id' => 1])->one();

// find all active customers and order them by their age:
$customers = Customer::find()
    ->where(['status' => 1])
    ->orderBy('age')
    ->all();

此方法还由 yii\db\BaseActiveRecord::hasOne()yii\db\BaseActiveRecord::hasMany() 调用以创建关系查询。

您可以重写此方法以返回自定义查询。例如,

class Customer extends ActiveRecord
{
    public static function find()
    {
        // use CustomerQuery instead of the default ActiveQuery
        return new CustomerQuery(get_called_class());
    }
}

以下代码展示了如何为所有查询应用默认条件

class Customer extends ActiveRecord
{
    public static function find()
    {
        return parent::find()->where(['deleted' => false]);
    }
}

// Use andWhere()/orWhere() to apply the default condition
// SELECT FROM customer WHERE `deleted`=:deleted AND age>30
$customers = Customer::find()->andWhere('age>30')->all();

// Use where() to ignore the default condition
// SELECT FROM customer WHERE age>30
$customers = Customer::find()->where('age>30')->all();
public abstract static yii\db\ActiveQueryInterface find ( )
返回 yii\db\ActiveQueryInterface

新创建的 yii\db\ActiveQueryInterface 实例。

                public static function find();

            
findAll() public abstract static method

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

此方法接受

  • 标量值(整数或字符串):按单个主键值查询并返回包含相应记录的数组(如果未找到则返回空数组)。
  • 非关联数组:按主键值列表查询并返回相应的记录(如果未找到则返回空数组)。请注意,空条件将导致空结果,因为它将被解释为对主键的搜索,而不是空的 WHERE 条件。
  • 名称-值对的关联数组:按一组属性值查询并返回匹配所有属性值的记录数组(如果未找到则返回空数组)。请注意,['id' => 1, 2] 被视为非关联数组。对于 SQL DBMS,列名仅限于当前记录表的列,或者以其他方式进行过滤以限制为简单的过滤条件。
  • yii\db\Expression:该表达式将直接使用。(@since 2.0.37)

此方法将自动调用 all() 方法并返回一个 ActiveRecord 实例数组。

注意:由于这只是一个简写方法,因此使用更复杂的条件(例如 ['!=', 'id', 1])将不起作用。如果您需要指定更复杂的条件,请使用 find() 并结合 where() 使用。

请参阅以下代码以获取使用示例

// find the customers whose primary key value is 10
$customers = Customer::findAll(10);

// the above code is equivalent to:
$customers = Customer::find()->where(['id' => 10])->all();

// find the customers whose primary key value is 10, 11 or 12.
$customers = Customer::findAll([10, 11, 12]);

// the above code is equivalent to:
$customers = Customer::find()->where(['id' => [10, 11, 12]])->all();

// find customers whose age is 30 and whose status is 1
$customers = Customer::findAll(['age' => 30, 'status' => 1]);

// the above code is equivalent to:
$customers = Customer::find()->where(['age' => 30, 'status' => 1])->all();

如果您需要将用户输入传递给此方法,请确保输入值为标量,或者在数组条件的情况下,请确保数组结构无法从外部更改。

// yii\web\Controller ensures that $id is scalar
public function actionView($id)
{
    $model = Post::findOne($id);
    // ...
}

// explicitly specifying the colum to search, passing a scalar or array here will always result in finding a single record
$model = Post::findOne(['id' => Yii::$app->request->get('id')]);

// do NOT use the following code! it is possible to inject an array condition to filter by arbitrary column values!
$model = Post::findOne(Yii::$app->request->get('id'));
public abstract static array findAll ( $condition )
$condition 混合类型

主键值或一组列值

返回 array

ActiveRecord 实例数组,如果没有任何匹配项则为空数组。

                public static function findAll($condition);

            
findOne() public abstract static method

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

此方法接受

  • 标量值(整数或字符串):按单个主键值查询并返回相应的记录(如果未找到则返回 null)。
  • 非关联数组:按主键值列表查询并返回第一条记录(如果未找到则返回 null)。
  • 名称-值对的关联数组:按一组属性值查询并返回匹配所有属性值的一条记录(如果未找到则返回 null)。请注意,['id' => 1, 2] 被视为非关联数组。列名仅限于当前记录表的列,或者以其他方式进行过滤以限制为简单的过滤条件。
  • yii\db\Expression:该表达式将直接使用。(@since 2.0.37)

此方法将自动调用 one() 方法并返回一个 ActiveRecord 实例。

注意:由于这只是一个简写方法,因此使用更复杂的条件(例如 ['!=', 'id', 1])将不起作用。如果您需要指定更复杂的条件,请使用 find() 并结合 where() 使用。

请参阅以下代码以获取使用示例

// find a single customer whose primary key value is 10
$customer = Customer::findOne(10);

// the above code is equivalent to:
$customer = Customer::find()->where(['id' => 10])->one();

// find the customers whose primary key value is 10, 11 or 12.
$customers = Customer::findOne([10, 11, 12]);

// the above code is equivalent to:
$customers = Customer::find()->where(['id' => [10, 11, 12]])->one();

// find the first customer whose age is 30 and whose status is 1
$customer = Customer::findOne(['age' => 30, 'status' => 1]);

// the above code is equivalent to:
$customer = Customer::find()->where(['age' => 30, 'status' => 1])->one();

如果您需要将用户输入传递给此方法,请确保输入值为标量,或者在数组条件的情况下,请确保数组结构无法从外部更改。

// yii\web\Controller ensures that $id is scalar
public function actionView($id)
{
    $model = Post::findOne($id);
    // ...
}

// explicitly specifying the colum to search, passing a scalar or array here will always result in finding a single record
$model = Post::findOne(['id' => Yii::$app->request->get('id')]);

// do NOT use the following code! it is possible to inject an array condition to filter by arbitrary column values!
$model = Post::findOne(Yii::$app->request->get('id'));
public abstract static static|null findOne ( $condition )
$condition 混合类型

主键值或一组列值

返回 static|null

匹配条件的 ActiveRecord 实例,如果没有任何匹配项则返回 null

                public static function findOne($condition);

            
getAttribute() public abstract method

返回命名的属性值。

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

另请参阅 hasAttribute()

public abstract mixed getAttribute ( $name )
$name 字符串

属性名称

返回 混合类型

属性值。如果属性未设置或不存在,则为 null

                public function getAttribute($name);

            
getDb() public abstract static method

返回此AR类使用的连接。

public abstract static mixed getDb ( )
返回 混合类型

此 AR 类使用的数据库连接。

                public static function getDb();

            
getIsNewRecord() public abstract method

返回一个值,指示当前记录是否为新记录(未保存在数据库中)。

public abstract boolean getIsNewRecord ( )
返回 boolean

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

                public function getIsNewRecord();

            
getOldPrimaryKey() public abstract method

返回旧的主键值。

这指的是在执行查找方法(例如 find()、findOne())后填充到记录中的主键值。即使手动为主键属性分配了不同的值,该值也不会改变。

public abstract mixed getOldPrimaryKey ( $asArray false )
$asArray boolean

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

返回 混合类型

旧的主键值。如果主键是复合主键或 $asArray 为 true,则返回数组(列名 => 列值)。否则返回字符串(如果键值为 null,则返回 null)。

                public function getOldPrimaryKey($asArray = false);

            
getPrimaryKey() public abstract method

返回主键值。

public abstract mixed getPrimaryKey ( $asArray false )
$asArray boolean

是否以数组形式返回主键值。如果为 true,则返回值将是一个数组,其中属性名称作为键,属性值作为值。请注意,对于复合主键,无论此参数值如何,始终都会返回数组。

返回 混合类型

主键值。如果主键是复合主键或 $asArray 为 true,则返回数组(属性名称 => 属性值)。否则返回字符串(如果键值为 null,则返回 null)。

                public function getPrimaryKey($asArray = false);

            
getRelation() public abstract method

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

关系由一个 getter 方法定义,该方法返回一个实现 yii\db\ActiveQueryInterface 的对象(通常这将是一个关系 yii\db\ActiveQuery 对象)。它可以在 ActiveRecord 类本身或其某个行为中声明。

public abstract yii\db\ActiveQueryInterface getRelation ( $name, $throwException true )
$name 字符串

关系名称,例如,对于通过 getOrders() 方法定义的关系,关系名为 orders(区分大小写)。

$throwException boolean

如果关系不存在是否抛出异常。

返回 yii\db\ActiveQueryInterface

关系查询对象

                public function getRelation($name, $throwException = true);

            
hasAttribute() 公共抽象方法

返回一个值,指示记录是否具有指定名称的属性。

public abstract boolean hasAttribute ( $name )
$name 字符串

属性名称

返回 boolean

记录是否具有指定名称的属性。

                public function hasAttribute($name);

            
insert() 公共抽象方法

使用此记录的属性值将记录插入数据库。

使用示例

$customer = new Customer;
$customer->name = $name;
$customer->email = $email;
$customer->insert();
public abstract boolean insert ( $runValidation true, $attributes null )
$runValidation boolean

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

$attributes array|null

需要保存的属性列表。默认为 null,表示将保存从数据库加载的所有属性。

返回 boolean

属性是否有效以及记录是否成功插入。

                public function insert($runValidation = true, $attributes = null);

            
instance() 公共抽象静态方法

定义于: yii\base\StaticInstanceInterface::instance()

返回静态类实例,可用于获取元信息。

public abstract static static instance ( $refresh false )
$refresh boolean

即使静态实例已被缓存,是否重新创建它。

返回 static

类实例。

                public static function instance($refresh = false);

            
isPrimaryKey() 公共抽象静态方法

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

public abstract static boolean isPrimaryKey ( $keys )
$keys array

要检查的属性集

返回 boolean

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

                public static function isPrimaryKey($keys);

            
link() 公共抽象方法

建立两条记录之间的关系。

此关系是通过将一条记录中的外键值设置为另一条记录中相应的主键值来建立的。具有外键的记录将保存到数据库中,而无需执行验证。

如果关系涉及联接表,则将在联接表中插入一个新行,其中包含两条记录的主键值。

此方法要求主键值不为 null

public abstract void link ( $name, $model, $extraColumns = [] )
$name 字符串

关系的区分大小写的名称,例如,对于通过 getOrders() 方法定义的关系,为 orders

$model static

要与当前记录关联的记录。

$extraColumns array

要保存到联接表中的其他列值。此参数仅对涉及联接表的关系有意义(即,使用 yii\db\ActiveQueryInterface::via() 设置的关系)。

populateRelation() 公共抽象方法 (自版本 2.0.8 起可用)

使用相关记录填充命名关系。

请注意,此方法不检查关系是否存在。

public abstract void populateRelation ( $name, $records )
$name 字符串

关系名称,例如,对于通过 getOrders() 方法定义的关系,关系名为 orders(区分大小写)。

$records yii\db\ActiveRecordInterface|array|null

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

                public function populateRelation($name, $records);

            
primaryKey() 公共抽象静态方法

返回此AR类的主键**名称**。

请注意,即使记录只有一个主键,也应该返回一个数组。

有关主键**值**,请改用 getPrimaryKey()

public abstract static string[] primaryKey ( )
返回 字符串[]

此 AR 类的主键名称。

                public static function primaryKey();

            
save() 公共抽象方法

保存当前记录。

isNewRecord 为 true 时,此方法将调用 insert(),或当 isNewRecord 为 false 时调用 update()

例如,要保存客户记录

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

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

$attributeNames array|null

需要保存的属性名称列表。默认为 null,表示将保存从数据库加载的所有属性。

返回 boolean

保存是否成功(即没有发生验证错误)。

                public function save($runValidation = true, $attributeNames = null);

            
setAttribute() 公共抽象方法

设置命名的属性值。

另请参阅 hasAttribute()

public abstract void setAttribute ( $name, $value )
$name 字符串

属性名称。

$value 混合类型

属性值。

                public function setAttribute($name, $value);

            
unlink() 公共抽象方法

销毁两条记录之间的关系。

如果 $delete 为 true,则将删除具有关系外键的记录。否则,外键将设置为 null,并且记录将保存而无需验证。

public abstract void unlink ( $name, $model, $delete false )
$name 字符串

关系的区分大小写的名称,例如,对于通过 getOrders() 方法定义的关系,为 orders

$model static

要从当前记录中取消关联的模型。

$delete boolean

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

update() 公共抽象方法

将更改保存到此活动记录到数据库中。

使用示例

$customer = Customer::findOne($id);
$customer->name = $name;
$customer->email = $email;
$customer->update();
公共抽象 整数|布尔值 update ( $runValidation true, $attributeNames null )
$runValidation boolean

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

$attributeNames array|null

需要保存的属性列表。默认为 null,表示将保存从数据库加载的所有属性。

返回 integer|boolean

受影响的行数,如果验证失败或更新过程因其他原因停止,则返回false。请注意,即使更新执行成功,受影响的行数也可能为0。

                public function update($runValidation = true, $attributeNames = null);

            
updateAll() 公共抽象静态方法

使用提供的属性值和条件更新记录。

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

Customer::updateAll(['status' => 1], ['status' => '2']);
公共抽象静态 整数 updateAll ( $attributes, $condition null )
$attributes array

要为记录保存的属性值(名称-值对)。与update()不同,这些属性不会被验证。

$condition 混合类型

匹配应更新记录的条件。请参考yii\db\QueryInterface::where()了解如何指定此参数。空条件将匹配所有记录。

返回 integer

更新的行数

                public static function updateAll($attributes, $condition = null);