Interface yii\db\ActiveQueryInterface

扩展yii\db\QueryInterface
Implemented byyii\db\ActiveQuery
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/db/ActiveQueryInterface.php

ActiveQueryInterface 定义了要由活动记录查询类实现的公共接口.

这既是用于返回活动记录的普通查询, 又是关系查询的方法, 在该关系查询中, 查询表示两个活动记录类之间的关系, 并且仅返回相关记录.

实现此接口的类也应使用 yii\db\ActiveQueryTraityii\db\ActiveRelationTrait.

公共方法

隐藏继承的方法

方法描述定义在
addOrderBy() 将其它 ORDER BY 列添加到查询中. yii\db\QueryInterface
all() 执行查询并以数组形式返回所有结果. yii\db\QueryInterface
andFilterWhere() 将一个 WHERE 条件添加到现有条件中, 忽略空参数. yii\db\QueryInterface
andWhere() 将一个 WHERE 条件添加到现有条件中. yii\db\QueryInterface
asArray() 设置 asArray() 属性. yii\db\ActiveQueryInterface
count() 返回记录数. yii\db\QueryInterface
emulateExecution() 设置是否模拟查询执行, 以防止与数据存储的任何交互. yii\db\QueryInterface
exists() 返回一个值, 该值指示查询结果是否包含任何数据行. yii\db\QueryInterface
filterWhere() 设置查询的 WHERE 部分, 忽略空参数. yii\db\QueryInterface
findFor() 查找指定主记录的相关记录. yii\db\ActiveQueryInterface
indexBy() Sets the indexBy() property. yii\db\ActiveQueryInterface
limit() 设置查询的 LIMIT 部分. yii\db\QueryInterface
offset() 设置查询的 OFFSET 部分. yii\db\QueryInterface
one() 执行查询并返回单行结果. yii\db\ActiveQueryInterface
orFilterWhere() 将一个 WHERE 条件添加到现有条件中, 忽略空参数. yii\db\QueryInterface
orWhere() 将一个 WHERE 条件添加到现有条件中. yii\db\QueryInterface
orderBy() 设置查询的 ORDER BY 部分. yii\db\QueryInterface
via() 指定与联结表关联的关系以在关系查询中使用. yii\db\ActiveQueryInterface
where() 设置查询的 WHERE 部分. yii\db\QueryInterface
with() 指定应执行此查询的关系. yii\db\ActiveQueryInterface

方法详情

asArray() public abstract 方法

设置 asArray() 属性.

public abstract $this asArray ( $value true )
$value boolean

是否以数组(而不是以活动记录)的形式返回查询结果.

return $this

查询对象本身.

findFor() public abstract 方法

查找指定主记录的相关记录.

当以惰性方式访问 ActiveRecord 的关系时, 将调用此方法.

public abstract mixed findFor ( $name, $model )
$name string

关系名称.

$model yii\db\ActiveRecordInterface

主模型.

return mixed

相关记录.

indexBy() public abstract 方法

Sets the indexBy() property.

public abstract $this indexBy ( $column )
$column string|callable

查询结果所依据的列的名称. 这也可以是可调用的(eg. 匿名函数), 该调用可根据给定的行或模型数据返回索引值. 可调用的签名应该是:

// 当`asArray`为`false`时, $model 是一个 AR 实例; 或者`asArray`为`true`时的一个列值的数组.
function ($model)
{
    // 返回对应于 $model 的索引值
}
return $this

查询对象本身.

one() public abstract 方法

执行查询并返回单行结果.

public abstract yii\db\ActiveRecordInterface|array|null one ( $db null )
$db yii\db\Connection

用于创建 DB 命令的数据库(DB)连接. 如果为null, 则将使用由 modelClass 返回的数据库(DB)连接.

return yii\db\ActiveRecordInterface|array|null

单行查询结果. 根据 asArray() 的设置, 查询结果可能是数组或 ActiveRecord 对象. 如果查询没有任何结果, 则将返回null.

via() public abstract 方法

指定与联结表关联的关系以在关系查询中使用.

public abstract $this via ( $relationName, callable $callable null )
$relationName string

关系名称. 这是指在该关系的 primaryModel 中声明的关系.

$callable callable

用于自定义与联结表关联的关系的 PHP 回调. 它的签名应该是function($query), 其中$query是要自定义的查询.

return $this

关系对象本身.

with() public abstract 方法

指定应执行此查询的关系.

此方法的参数可以是一个或多个字符串, 也可以是单个关系名称数组以及用于自定义关系的可选回调函数.

关系名称可以引用 modelClass 中定义的关系, 也可以表示代表相关记录的关系的子关系. 例如, orders.address表示在模型中定义的与orders关系相对应的address关系.

以下是一些使用示例:

// 查找客户以及他们的订单和国家
Customer::find()->with('orders', 'country')->all();
// 查找客户以及他们的订单和订单的送货地址
Customer::find()->with('orders.address')->all();
// 查找客户及其国家和状态为`1`的订单
Customer::find()->with([
    'orders' => function (\yii\db\ActiveQuery $query) {
        $query->andWhere('status = 1');
    },
    'country',
])->all();
public abstract $this with ( )
return $this

查询对象本身.