Class yii\sphinx\ActiveDataProvider
Inheritance | yii\sphinx\ActiveDataProvider » yii\data\ActiveDataProvider » yii\data\BaseDataProvider » yii\base\Component » yii\base\BaseObject |
---|---|
Implements | yii\base\Configurable, yii\data\DataProviderInterface |
Available since version | 2.0.4 |
Source Code | https://github.com/yiisoft/yii2-sphinx/blob/master/ActiveDataProvider.php |
ActiveDataProvider is an enhanced version of yii\data\ActiveDataProvider specific to the Sphinx.
It allows to fetch not only rows and total rows count, but also a meta information and facet results.
The following is an example of using ActiveDataProvider to provide facet results:
$provider = new ActiveDataProvider([
'query' => Post::find()->facets(['author_id', 'category_id']),
'pagination' => [
'pageSize' => 20,
],
]);
// get the posts in the current page
$posts = $provider->getModels();
// get all facets
$facets = $provider->getFacets();
// get particular facet
$authorFacet = $provider->getFacet('author_id');
In case yii\sphinx\Query::showMeta() is set ActiveDataProvider will fetch total count value from the query meta information, avoiding extra counting query:
$provider = new ActiveDataProvider([
'query' => Post::find()->showMeta(true),
'pagination' => [
'pageSize' => 20,
],
]);
$totalCount = $provider->getTotalCount(); // fetched from meta information
Note: when using 'meta' information results total count will be fetched after pagination limit applying,
which eliminates ability to verify if requested page number actually exist. Data provider disables yii\data\Pagination::validatePage
automatically in this case.
Note: because pagination offset and limit may exceed Sphinx 'max_matches' bounds, data provider will set 'max_matches' option automatically based on those values. However, if yii\sphinx\Query::showMeta() is set, such adjustment is not performed as it will break total count calculation, so you'll have to deal with 'max_matches' bounds on your own.
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
$db | yii\db\Connection|array|string | The DB connection object or the application component ID of the DB connection. | yii\data\ActiveDataProvider |
$id | string | An ID that uniquely identifies the data provider among all data providers. | yii\data\BaseDataProvider |
$key | string|callable | The column that is used as the key of the data models. | yii\data\ActiveDataProvider |
$query | yii\db\QueryInterface | The query that is used to fetch data models and \yii\data\totalCount if it is not explicitly set. | yii\data\ActiveDataProvider |
Public Methods
Method | Description | Defined By |
---|---|---|
__call() | Calls the named method which is not a class method. | yii\base\Component |
__clone() | yii\data\ActiveDataProvider | |
__construct() | Constructor. | yii\base\BaseObject |
__get() | Returns the value of a component property. | yii\base\Component |
__isset() | Checks if a property is set, i.e. defined and not null. | yii\base\Component |
__set() | Sets the value of a component property. | yii\base\Component |
__unset() | Sets a component property to be null. | yii\base\Component |
attachBehavior() | Attaches a behavior to this component. | yii\base\Component |
attachBehaviors() | Attaches a list of behaviors to the component. | yii\base\Component |
behaviors() | Returns a list of behaviors that this component should behave as. | yii\base\Component |
canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\Component |
canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\Component |
className() | Returns the fully qualified name of this class. | yii\base\BaseObject |
detachBehavior() | Detaches a behavior from the component. | yii\base\Component |
detachBehaviors() | Detaches all behaviors from the component. | yii\base\Component |
ensureBehaviors() | Makes sure that the behaviors declared in behaviors() are attached to this component. | yii\base\Component |
getBehavior() | Returns the named behavior object. | yii\base\Component |
getBehaviors() | Returns all behaviors attached to this component. | yii\base\Component |
getCount() | Returns the number of data models in the current page. | yii\data\BaseDataProvider |
getFacet() | Returns results of the specified facet. | yii\sphinx\ActiveDataProvider |
getFacets() | yii\sphinx\ActiveDataProvider | |
getKeys() | Returns the key values associated with the data models. | yii\data\BaseDataProvider |
getMeta() | yii\sphinx\ActiveDataProvider | |
getModels() | Returns the data models in the current page. | yii\data\BaseDataProvider |
getPagination() | Returns the pagination object used by this data provider. | yii\data\BaseDataProvider |
getSort() | Returns the sorting object used by this data provider. | yii\data\BaseDataProvider |
getTotalCount() | Returns the total number of data models. | yii\data\BaseDataProvider |
hasEventHandlers() | Returns a value indicating whether there is any handler attached to the named event. | yii\base\Component |
hasMethod() | Returns a value indicating whether a method is defined. | yii\base\Component |
hasProperty() | Returns a value indicating whether a property is defined for this component. | yii\base\Component |
init() | Initializes the DB connection component. | yii\data\ActiveDataProvider |
off() | Detaches an existing event handler from this component. | yii\base\Component |
on() | Attaches an event handler to an event. | yii\base\Component |
prepare() | Prepares the data models and keys. | yii\data\BaseDataProvider |
refresh() | Refreshes the data provider. | yii\data\BaseDataProvider |
setFacets() | yii\sphinx\ActiveDataProvider | |
setKeys() | Sets the key values associated with the data models. | yii\data\BaseDataProvider |
setMeta() | yii\sphinx\ActiveDataProvider | |
setModels() | Sets the data models in the current page. | yii\data\BaseDataProvider |
setPagination() | Sets the pagination for this data provider. | yii\data\BaseDataProvider |
setSort() | {@inheritdoc} | yii\data\ActiveDataProvider |
setTotalCount() | Sets the total number of data models. | yii\data\BaseDataProvider |
trigger() | Triggers an event. | yii\base\Component |
Protected Methods
Method | Description | Defined By |
---|---|---|
prepareKeys() | {@inheritdoc} | yii\data\ActiveDataProvider |
prepareModels() | {@inheritdoc} | yii\sphinx\ActiveDataProvider |
prepareTotalCount() | {@inheritdoc} | yii\sphinx\ActiveDataProvider |
Method Details
Returns results of the specified facet.
public array getFacet ( $name ) | ||
$name | string | Facet name |
return | array | Facet results. |
---|---|---|
throws | yii\base\InvalidCallException | if requested facet does not present in results. |
public array getFacets ( ) | ||
return | array | Query facet results. |
---|
public array getMeta ( ) | ||
return | array | Search query meta info |
---|
{@inheritdoc}
protected void prepareModels ( ) |
{@inheritdoc}
protected void prepareTotalCount ( ) |
public void setFacets ( $facets ) | ||
$facets | array | Query facet results. |
public void setMeta ( $meta ) | ||
$meta | array | Search query meta info |