public abstract static string[] primaryKey ( ) | ||
返回 | 字符串[] |
此 AR 类的主键名称。 |
---|
public static function primaryKey();
扩展 | yii\base\StaticInstanceInterface |
---|---|
实现于 | yii\db\ActiveRecord, yii\db\BaseActiveRecord |
可用版本 | 2.0 |
源代码 | https://github.com/yiisoft/yii2/blob/master/framework/db/ActiveRecordInterface.php |
ActiveRecordInterface。
从数据库中删除记录。
public abstract integer|boolean delete ( ) | ||
返回 | integer|boolean |
删除的行数,或者如果由于某种原因删除不成功则返回 |
---|
public function delete();
使用提供的条件删除记录。
警告:如果您未指定任何条件,则此方法将删除表中的所有行。
例如,要删除所有状态为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);
返回一个值,指示给定的活动记录是否与当前记录相同。
两条新记录被认为是不相等的。
public abstract boolean equals ( $record ) | ||
$record | static |
要比较的记录 |
返回 | boolean |
这两个活动记录是否引用同一数据库表中的同一行。 |
---|
public function equals($record);
为查询目的创建一个 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();
返回与指定的primaryKey值或一组列值匹配的活动记录模型列表。
此方法接受
WHERE
条件。['id' => 1, 2]
被视为非关联数组。对于 SQL DBMS,列名仅限于当前记录表的列,或者以其他方式进行过滤以限制为简单的过滤条件。此方法将自动调用 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);
通过主键或一组列值返回单个活动记录模型实例。
此方法接受
null
)。null
)。null
)。请注意,['id' => 1, 2]
被视为非关联数组。列名仅限于当前记录表的列,或者以其他方式进行过滤以限制为简单的过滤条件。此方法将自动调用 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 实例,如果没有任何匹配项则返回 |
---|
public static function findOne($condition);
public abstract mixed getAttribute ( $name ) | ||
$name | 字符串 |
属性名称 |
返回 | 混合类型 |
属性值。如果属性未设置或不存在,则为 |
---|
public function getAttribute($name);
返回此AR类使用的连接。
public abstract static mixed getDb ( ) | ||
返回 | 混合类型 |
此 AR 类使用的数据库连接。 |
---|
public static function getDb();
返回一个值,指示当前记录是否为新记录(未保存在数据库中)。
public abstract boolean getIsNewRecord ( ) | ||
返回 | boolean |
记录是否为新记录,并在调用 save() 时应插入。 |
---|
public function getIsNewRecord();
返回旧的主键值。
这指的是在执行查找方法(例如 find()、findOne())后填充到记录中的主键值。即使手动为主键属性分配了不同的值,该值也不会改变。
public abstract mixed getOldPrimaryKey ( $asArray = false ) | ||
$asArray | boolean |
是否以数组形式返回主键值。如果为 true,则返回值将是一个数组,其中列名作为键,列值作为值。如果为 |
返回 | 混合类型 |
旧的主键值。如果主键是复合主键或 |
---|
public function getOldPrimaryKey($asArray = false);
返回主键值。
public abstract mixed getPrimaryKey ( $asArray = false ) | ||
$asArray | boolean |
是否以数组形式返回主键值。如果为 true,则返回值将是一个数组,其中属性名称作为键,属性值作为值。请注意,对于复合主键,无论此参数值如何,始终都会返回数组。 |
返回 | 混合类型 |
主键值。如果主键是复合主键或 |
---|
public function getPrimaryKey($asArray = false);
返回具有指定名称的关系对象。
关系由一个 getter 方法定义,该方法返回一个实现 yii\db\ActiveQueryInterface 的对象(通常这将是一个关系 yii\db\ActiveQuery 对象)。它可以在 ActiveRecord 类本身或其某个行为中声明。
public abstract yii\db\ActiveQueryInterface getRelation ( $name, $throwException = true ) | ||
$name | 字符串 |
关系名称,例如,对于通过 |
$throwException | boolean |
如果关系不存在是否抛出异常。 |
返回 | yii\db\ActiveQueryInterface |
关系查询对象 |
---|
public function getRelation($name, $throwException = true);
返回一个值,指示记录是否具有指定名称的属性。
public abstract boolean hasAttribute ( $name ) | ||
$name | 字符串 |
属性名称 |
返回 | boolean |
记录是否具有指定名称的属性。 |
---|
public function hasAttribute($name);
使用此记录的属性值将记录插入数据库。
使用示例
$customer = new Customer;
$customer->name = $name;
$customer->email = $email;
$customer->insert();
public abstract boolean insert ( $runValidation = true, $attributes = null ) | ||
$runValidation | boolean |
是否在保存记录之前执行验证(调用 validate())。默认为 |
$attributes | array|null |
需要保存的属性列表。默认为 |
返回 | boolean |
属性是否有效以及记录是否成功插入。 |
---|
public function insert($runValidation = true, $attributes = null);
定义于: yii\base\StaticInstanceInterface::instance()
返回静态类实例,可用于获取元信息。
public abstract static static instance ( $refresh = false ) | ||
$refresh | boolean |
即使静态实例已被缓存,是否重新创建它。 |
返回 | static |
类实例。 |
---|
public static function instance($refresh = false);
返回一个值,指示给定的属性集是否代表此模型的主键。
public abstract static boolean isPrimaryKey ( $keys ) | ||
$keys | array |
要检查的属性集 |
返回 | boolean |
给定的属性集是否代表此模型的主键 |
---|
public static function isPrimaryKey($keys);
建立两条记录之间的关系。
此关系是通过将一条记录中的外键值设置为另一条记录中相应的主键值来建立的。具有外键的记录将保存到数据库中,而无需执行验证。
如果关系涉及联接表,则将在联接表中插入一个新行,其中包含两条记录的主键值。
此方法要求主键值不为 null
。
public abstract void link ( $name, $model, $extraColumns = [] ) | ||
$name | 字符串 |
关系的区分大小写的名称,例如,对于通过 |
$model | static |
要与当前记录关联的记录。 |
$extraColumns | array |
要保存到联接表中的其他列值。此参数仅对涉及联接表的关系有意义(即,使用 yii\db\ActiveQueryInterface::via() 设置的关系)。 |
public function link($name, $model, $extraColumns = []);
使用相关记录填充命名关系。
请注意,此方法不检查关系是否存在。
public abstract void populateRelation ( $name, $records ) | ||
$name | 字符串 |
关系名称,例如,对于通过 |
$records | yii\db\ActiveRecordInterface|array|null |
要填充到关系中的相关记录。 |
public function populateRelation($name, $records);
public abstract static string[] primaryKey ( ) | ||
返回 | 字符串[] |
此 AR 类的主键名称。 |
---|
public static function primaryKey();
保存当前记录。
当 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())。默认为 |
$attributeNames | array|null |
需要保存的属性名称列表。默认为 |
返回 | boolean |
保存是否成功(即没有发生验证错误)。 |
---|
public function save($runValidation = true, $attributeNames = null);
设置命名的属性值。
另请参阅 hasAttribute()。
public abstract void setAttribute ( $name, $value ) | ||
$name | 字符串 |
属性名称。 |
$value | 混合类型 |
属性值。 |
public function setAttribute($name, $value);
销毁两条记录之间的关系。
如果 $delete
为 true,则将删除具有关系外键的记录。否则,外键将设置为 null
,并且记录将保存而无需验证。
public abstract void unlink ( $name, $model, $delete = false ) | ||
$name | 字符串 |
关系的区分大小写的名称,例如,对于通过 |
$model | static |
要从当前记录中取消关联的模型。 |
$delete | boolean |
是否删除包含外键的模型。如果为 false,则模型的外键将设置为 |
public function unlink($name, $model, $delete = false);
将更改保存到此活动记录到数据库中。
使用示例
$customer = Customer::findOne($id);
$customer->name = $name;
$customer->email = $email;
$customer->update();
公共抽象 整数|布尔值 update ( $runValidation = true, $attributeNames = null ) | ||
$runValidation | boolean |
是否在保存记录之前执行验证(调用 validate())。默认为 |
$attributeNames | array|null |
需要保存的属性列表。默认为 |
返回 | integer|boolean |
受影响的行数,如果验证失败或更新过程因其他原因停止,则返回 |
---|
public function update($runValidation = true, $attributeNames = null);
使用提供的属性值和条件更新记录。
例如,将所有状态为 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);
为了发表评论,请注册或登录。