Skip to content
PHP Ecosystem
Explore

ActiveQueryTrait

API reference › yii › db › ActiveQueryTrait

traityii\db\ActiveQueryTrait
Since2.0
Sourceframework/db/ActiveQueryTrait.php
Used by 1 type

ActiveQueryTrait implements the common methods and properties for active record query classes.

PropertyTypeDescriptionDefined by
$asArrayboolWhether to return each record as an array. Default: null.ActiveQueryTrait
$modelClassclass-string<ActiveRecordInterface>The name of the ActiveRecord class. Default: null.ActiveQueryTrait
$witharray|nullA list of relations that this query should be performed with Default: null.ActiveQueryTrait
MethodDescriptionDefined by
asArray()Sets the asArray() property.ActiveQueryTrait
findWith()Finds records corresponding to one or multiple relations and populates them into the primary models.ActiveQueryTrait
with()Specifies the relations with which this query should be performed.ActiveQueryTrait
createModels() protectedConverts found rows into model instances.ActiveQueryTrait
public bool $asArray = null

Whether to return each record as an array.

If false (default), an object of $modelClass will be created to represent each record.

public function asArray(bool $value = true): $this

Sets the asArray() property.

Parameters

ParameterTypeDescription
$valueboolWhether to return the query results in terms of arrays instead of Active Records.

Returns

$this: The query object itself

public function findWith(array $with, array &$models): mixed

Finds records corresponding to one or multiple relations and populates them into the primary models.

Parameters

ParameterTypeDescription
$witharrayA list of relations that this query should be performed with. Please refer to with() for details about specifying this parameter.
$modelsarrayThe primary models (can be either AR instances or arrays)

Returns

mixed

public function with(): $this

Specifies the relations with which this query should be performed.

The parameters to this method can be either one or multiple strings, or a single array of relation names and the optional callbacks to customize the relations.

A relation name can refer to a relation defined in $modelClass or a sub-relation that stands for a relation of a related record. For example, orders.address means the address relation defined in the model class corresponding to the orders relation.

The following are some usage examples:

// find customers together with their orders and country
Customer::find()->with('orders', 'country')->all();
// find customers together with their orders and the orders' shipping address
Customer::find()->with('orders.address')->all();
// find customers together with their country and orders of status 1
Customer::find()->with([
'orders' => function (\yii\db\ActiveQuery $query) {
$query->andWhere('status = 1');
},
'country',
])->all();

You can call with() multiple times. Each call will add relations to the existing ones. For example, the following two statements are equivalent:

Customer::find()->with('orders', 'country')->all();
Customer::find()->with('orders')->with('country')->all();

Returns

$this: The query object itself

protected function createModels(array $rows, yii\db\Connection|null $db = null): array|yii\db\BaseActiveRecord[]

Converts found rows into model instances.

Parameters

ParameterTypeDescription
$rowsarrayThe rows to be converted into model instances. Each array element represents a row of data.
$dbConnection|nullThe database connection used to retrieve the rows.

Returns

array|BaseActiveRecord[]: The model instances created from the rows. If asArray() is true, the rows will be returned as is.

Since

2.0.11