PHP Класс yii\sphinx\ActiveQuery
An ActiveQuery can be a normal query or be used in a relational context.
ActiveQuery instances are usually created by [[ActiveRecord::find()]] and [[ActiveRecord::findBySql()]].
Relational queries are created by [[ActiveRecord::hasOne()]] and [[ActiveRecord::hasMany()]].
Normal Query
------------
Because ActiveQuery extends from
Query, one can use query methods, such as [[where()]],
[[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:
~~~
$articles = Article::find()->with('source')->asArray()->all();
~~~
ActiveQuery allows to build the snippets using sources provided by ActiveRecord.
You can use
ActiveQuery::snippetByModel method to enable this.
For example:
~~~
class Article extends ActiveRecord
{
public function getSource()
{
return $this->hasOne('db', ArticleDb::className(), ['id' => 'id']);
}
public function getSnippetSource()
{
return $this->source->content;
}
...
}
$articles = Article::find()->with('source')->snippetByModel()->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.
Показать файл
Открыть проект
Примеры использования класса
Открытые свойства
Свойство |
Тип |
Описание |
|
$sql |
|
the SQL statement to be executed for retrieving AR records.
This is set by [[ActiveRecord::findBySql()]]. |
|
Открытые методы
Метод |
Описание |
|
__construct ( array $modelClass, array $config = [] ) |
Constructor. |
|
all ( Connection $db = null ) : array |
Executes query and returns all results as an array. |
|
createCommand ( Connection $db = null ) : Command |
Creates a DB command that can be used to execute this query. |
|
init ( ) |
Initializes the object. |
|
one ( Connection $db = null ) : ActiveRecord | array | null |
Executes query and returns a single row of result. |
|
populate ( $rows ) |
|
|
snippetByModel ( ) |
Sets the [[snippetCallback]] to ActiveQuery::fetchSnippetSourceFromModels, which allows to
fetch the snippet source strings from the Active Record models, using method
[[ActiveRecord::getSnippetSource()]]. |
|
Защищенные методы
Описание методов
__construct()
публичный Метод
public __construct ( array $modelClass, array $config = [] ) |
$modelClass |
array |
the model class associated with this query |
$config |
array |
configurations to be applied to the newly created query object |
Executes query and returns all results as an array.
public all ( Connection $db = null ) : array |
$db |
Connection |
the DB connection used to create the DB command.
If null, the DB connection returned by [[modelClass]] will be used. |
Результат |
array |
the query results. If the query results in nothing, an empty array will be returned. |
callSnippets()
защищенный Метод
createCommand()
публичный Метод
Creates a DB command that can be used to execute this query.
public createCommand ( Connection $db = null ) : Command |
$db |
Connection |
the DB connection used to create the DB command.
If null, the DB connection returned by [[modelClass]] will be used. |
Результат |
Command |
the created DB command instance. |
defaultConnection()
защищенный Метод
fetchSnippetSourceFromModels()
защищенный Метод
Fetches the source for the snippets using [[ActiveRecord::getSnippetSource()]] method.
This method is called at the end of the constructor. The default implementation will trigger
an [[EVENT_INIT]] event. If you override this method, make sure you call the parent implementation at the end
to ensure triggering of the event.
Executes query and returns a single row of result.
public one ( Connection $db = null ) : ActiveRecord | array | null |
$db |
Connection |
the DB connection used to create the DB command.
If null, the DB connection returned by [[modelClass]] will be used. |
Результат |
ActiveRecord | array | null |
a single row of query result. Depending on the setting of [[asArray]],
the query result may be either an array or an ActiveRecord object. Null will be returned
if the query results in nothing. |
populate()
публичный Метод
snippetByModel()
публичный Метод
For example:
php
class Article extends ActiveRecord
{
public function getSnippetSource()
{
return file_get_contents('/path/to/source/files/' . $this->id . '.txt');;
}
}
$articles = Article::find()->snippetByModel()->all();
Warning: this option should NOT be used with [[asArray]] at the same time!
Описание свойств
the SQL statement to be executed for retrieving AR records.
This is set by [[ActiveRecord::findBySql()]].