PHP Class 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.
Since: 2.0
Author: Paul Klimov ([email protected])
Inheritance: extends Query, implements yii\db\ActiveQueryInterface, use trait yii\db\ActiveQueryTrait, use trait yii\db\ActiveRelationTrait
显示文件 Open project: yiisoft/yii2-sphinx Class Usage Examples

Public Properties

Property Type Description
$sql the SQL statement to be executed for retrieving AR records. This is set by [[ActiveRecord::findBySql()]].

Public Methods

Method Description
__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()]].

Protected Methods

Method Description
callSnippets ( array $source )
defaultConnection ( )
fetchSnippetSourceFromModels ( ActiveRecord[] $models ) : array Fetches the source for the snippets using [[ActiveRecord::getSnippetSource()]] method.

Method Details

__construct() public method

Constructor.
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

all() public method

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.
return array the query results. If the query results in nothing, an empty array will be returned.

callSnippets() protected method

protected callSnippets ( array $source )
$source array

createCommand() public method

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.
return Command the created DB command instance.

defaultConnection() protected method

protected defaultConnection ( )

fetchSnippetSourceFromModels() protected method

Fetches the source for the snippets using [[ActiveRecord::getSnippetSource()]] method.
protected fetchSnippetSourceFromModels ( ActiveRecord[] $models ) : array
$models ActiveRecord[] raw query result rows.
return array snippet source strings

init() public 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.
public init ( )

one() public method

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.
return 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() public method

public populate ( $rows )

snippetByModel() public method

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!
public snippetByModel ( )

Property Details

$sql public_oe property

the SQL statement to be executed for retrieving AR records. This is set by [[ActiveRecord::findBySql()]].
public $sql