An ActiveQuery can be a normal query or be used in a relational context. ActiveQuery instances are usually created by [[ActiveRecord::find()]]. Relational queries are created by [[ActiveRecord::hasOne()]] and [[ActiveRecord::hasMany()]]. Normal Query ------------ ActiveQuery mainly provides the following methods to retrieve the query results: - ActiveQuery::one: returns a single record populated with the first row of data. - ActiveQuery::all: returns all records based on the query results. - ActiveQuery::count: returns the number of records. - ActiveQuery::sum: returns the sum over the specified column. - ActiveQuery::average: returns the average over the specified column. - ActiveQuery::min: returns the min over the specified column. - ActiveQuery::max: returns the max over the specified column. - ActiveQuery::scalar: returns the value of the first column in the first row of the query result. - ActiveQuery::exists: returns a value indicating whether the query result has data or not. You can use query methods, such as [[where()]], [[limit()]] and [[orderBy()]] to customize the query options. ActiveQuery also provides the following additional query options: - [[with()]]: list of relations that this query should be performed with. - [[indexBy()]]: the name of the column by which the query result should be indexed. - [[asArray()]]: whether to return each record as an array. These options can be configured using methods of the same name. For example: php $customers = Customer::find()->with('orders')->asArray()->all(); Relational query ---------------- In relational context ActiveQuery represents a relation between two Active Record classes. Relational ActiveQuery instances are usually created by calling [[ActiveRecord::hasOne()]] and [[ActiveRecord::hasMany()]]. An Active Record class declares a relation by defining a getter method which calls one of the above methods and returns the created ActiveQuery object. A relation is specified by [[link]] which represents the association between columns of different tables; and the multiplicity of the relation is indicated by [[multiple]]. If a relation involves a junction table, it may be specified by [[via()]]. This methods may only be called in a relational context. Same is true for [[inverseOf()]], which marks a relation as inverse of another relation.
Since: 2.0
Author: Carsten Brandt (mail@cebe.cc)
Inheritance: extends yii\base\Component, implements yii\db\ActiveQueryInterface, use trait yii\db\QueryTrait, use trait yii\db\ActiveQueryTrait, use trait yii\db\ActiveRelationTrait
 public function testFilterWhereRecursively()
 {
     $query = new ActiveQuery('dummy');
     $query->filterWhere(['and', ['like', 'name', ''], ['like', 'title', ''], ['id' => 1], ['not', ['like', 'name', '']]]);
     $this->assertEquals(['and', ['id' => 1]], $query->where);
 }
示例#2
0
 /**
  * @inheritdoc
  * @return ActiveQuery the newly created [[ActiveQuery]] instance.
  */
 public static function find()
 {
     return Yii::createObject(ActiveQuery::className(), [get_called_class()]);
 }
 public function init()
 {
     $this->buildNoInitModel();
     parent::init();
 }