yii\db\Query::batch PHP Method

batch() public method

A batch query supports fetching data in batches, which can keep the memory usage under a limit. This method will return a BatchQueryResult object which implements the [[\Iterator]] interface and can be traversed to retrieve the data in batches. For example, php $query = (new Query)->from('user'); foreach ($query->batch() as $rows) { $rows is an array of 100 or fewer rows from user table }
public batch ( integer $batchSize = 100, Connection $db = null ) : BatchQueryResult
$batchSize integer the number of records to be fetched in each batch.
$db Connection the database connection. If not set, the "db" application component will be used.
return BatchQueryResult the batch query result. It implements the [[\Iterator]] interface and can be traversed to retrieve the data in batches.
    public function batch($batchSize = 100, $db = null)
    {
        return Yii::createObject(['class' => BatchQueryResult::className(), 'query' => $this, 'batchSize' => $batchSize, 'db' => $db, 'each' => false]);
    }

Usage Example

Beispiel #1
7
 /**
  * Perform a Database Query and show the result as CSV
  *
  * By default, write to the output buffer.
  * But, if you set the filename, the file will be downloadable.
  *
  * @param string $filename Name of the file to download
  */
 public function performAsCSV($filename = null)
 {
     // Create the CSV into memory
     $csv = Writer::createFromFileObject(new SplTempFileObject());
     // Insert fields names as the CSV header
     $csv->insertOne($this->getCSVHeader());
     // Print to the output stream
     foreach ($this->query->batch() as $items) {
         // $items is an array of 100 or fewer rows from the db table
         $csv->insertAll($items);
     }
     $csv->output($filename);
 }
All Usage Examples Of yii\db\Query::batch