# Class yii\db\BatchQueryResult

Inheritance | yii\db\BatchQueryResult » yii\base\Component » yii\base\BaseObject
Implements | Iterator, yii\base\Configurable
Available since version | 2.0
Source Code | https://github.com/yiisoft/yii2/blob/master/framework/db/BatchQueryResult.php

BatchQueryResult represents a batch query from which you can retrieve data in batches.

You usually do not instantiate BatchQueryResult directly. Instead, you obtain it by calling yii\db\Query::batch() or yii\db\Query::each(). Because BatchQueryResult implements the Iterator interface, you can iterate it to obtain a batch of data in each iteration. For example,

    $query = (new Query)->from('user');
    foreach ($query->batch() as $i => $users) {
        // $users represents the rows in the $i-th batch
    }
    foreach ($query->each() as $user) {
    }

## Public Properties

Hide inherited properties

Property | Type | Description | Defined By
--- | --- | --- | ---
$batchSize | integer | The number of rows to be returned in each batch. | yii\db\BatchQueryResult
$behaviors | yii\base\Behavior[] | List of behaviors attached to this component. This property is read-only. | yii\base\Component
$db | yii\db\Connection | The DB connection to be used when performing batch query. | yii\db\BatchQueryResult
$each | boolean | Whether to return a single row during each iteration. | yii\db\BatchQueryResult
$query | yii\db\Query | The query object associated with this batch query. | yii\db\BatchQueryResult

## Public Methods

Hide inherited methods

Method | Description | Defined By
--- | --- | ---
__call() | Calls the named method which is not a class method. | yii\base\Component
__clone() | This method is called after the object is created by cloning an existing one. | yii\base\Component
__construct() | Constructor. | yii\base\BaseObject
__destruct() | Destructor. | yii\db\BatchQueryResult
__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
__wakeup() | Unserialization is disabled to prevent remote code execution in case application calls unserialize() on user input containing specially crafted string. | yii\db\BatchQueryResult
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
current() | Returns the current dataset. | yii\db\BatchQueryResult
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
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 object. | yii\base\BaseObject
key() | Returns the index of the current dataset. | yii\db\BatchQueryResult
next() | Moves the internal pointer to the next dataset. | yii\db\BatchQueryResult
off() | Detaches an existing event handler from this component. | yii\base\Component
on() | Attaches an event handler to an event. | yii\base\Component
reset() | Resets the batch query. | yii\db\BatchQueryResult
rewind() | Resets the iterator to the initial state. | yii\db\BatchQueryResult
trigger() | Triggers an event. | yii\base\Component
valid() | Returns whether there is a valid dataset at the current position. | yii\db\BatchQueryResult

## Protected Methods

Hide inherited methods

Method | Description | Defined By
--- | --- | ---
fetchData() | Fetches the next batch of data. | yii\db\BatchQueryResult
getRows() | Reads and collects rows for batch | yii\db\BatchQueryResult

## Events

Hide inherited events

Event | Type | Description | Defined By
--- | --- | --- | ---
EVENT_FINISH | \yii\db\Event | An event that is triggered when the last batch has been fetched. (available since version 2.0.41) | yii\db\BatchQueryResult
EVENT_RESET | \yii\db\Event | An event that is triggered when the batch query is reset. (available since version 2.0.41) | yii\db\BatchQueryResult

## Property Details

$batchSize public property

The number of rows to be returned in each batch.

public integer $batchSize = 100
$db public property

The DB connection to be used when performing batch query. If null, the "db" application component will be used.

public yii\db\Connection $db = null
$each public property

Whether to return a single row during each iteration. If false, a whole batch of rows will be returned in each iteration.

public boolean $each = false
$query public property

The query object associated with this batch query. Do not modify this property directly unless after reset() is called explicitly.

public yii\db\Query $query = null

## Method Details

__destruct() public method

Destructor.

public void __destruct ( )

__wakeup() public method (available since version 2.0.38)

Unserialization is disabled to prevent remote code execution in case application calls unserialize() on user input containing specially crafted string.

See also [[CVE-2020-15148]].

public void __wakeup ( )

current() public method

Returns the current dataset.

This method is required by the interface Iterator.

public mixed current ( )
return | mixed | The current dataset.

fetchData() protected method

Fetches the next batch of data.

protected array fetchData ( )
return | array | The data fetched
throws | yii\db\Exception |

getRows() protected method (available since version 2.0.23)

Reads and collects rows for batch

protected array getRows ( )

key() public method

Returns the index of the current dataset.

This method is required by the interface Iterator.

public integer key ( )
return | integer | The index of the current row.

next() public method

Moves the internal pointer to the next dataset.

This method is required by the interface Iterator.

public void next ( )

reset() public method

Resets the batch query.

This method will clean up the existing batch query so that a new batch query can be performed.

public void reset ( )

rewind() public method

Resets the iterator to the initial state.

This method is required by the interface Iterator.

public void rewind ( )

valid() public method

Returns whether there is a valid dataset at the current position.

This method is required by the interface Iterator.

public boolean valid ( )
return | boolean | Whether there is a valid dataset at the current position.

## Event Details

EVENT_FINISH event of type \yii\db\Event (available since version 2.0.41)

An event that is triggered when the last batch has been fetched.

EVENT_RESET event of type \yii\db\Event (available since version 2.0.41)

An event that is triggered when the batch query is reset.

See also reset().