/** * {@inheritDoc} * @see IteratorAggregate::getIterator() */ public function getIterator() { $builder = new CDbCriteriaBuilder(); $builder->setDefaultCriteria($this->_criteria); $builder->setLimit($this->_number_of_records_per_page); return array($builder); }
/** * {@inheritDoc} * @see IteratorAggregate::getIterator() */ public function getIterator() { /* @var $schema CDbSchema */ $schema = $this->_record->getDbConnection()->getSchema(); $sqlField = $schema->quoteColumnName($this->_dateFieldName); $sql = "SELECT " . $sqlField; $sql .= " FROM " . $schema->quoteTableName($this->_record->tableName()); $sql .= " ORDER BY " . $sqlField; $asc = " ASC LIMIT 1;"; $desc = " DESC LIMIT 1;"; $command = $schema->getCommandBuilder()->createSqlCommand($sql . $asc); $startdate = $command->queryScalar(); if (($currentDate = DateTime::createFromFormat('Y-m-d', $startdate)) === false) { throw new CException(Yii::t('export.DateDayExportPolicy', 'There is no records in table {name}.', array('{name}' => $this->_record->tableName()))); } $command = $schema->getCommandBuilder()->createSqlCommand($sql . $desc); $enddate = $command->queryScalar(); $interval = DateInterval::createFromDateString("+1 day"); // add +1 day to export until current day $builders = array(); for ($currentDate = DateTime::createFromFormat('Y-m-d', $startdate); strcmp($currentDate->format('Y-m-d'), $enddate) <= 0; $currentDate->add($interval)) { $builder = new CDbCriteriaBuilder(); $builder->setDefaultCriteria($this->_criteria); $builder->setLimit($this->_number_of_records_per_page); $builder->addCompare($this->_dateFieldName, $currentDate->format('Y-m-d')); $builders[] = $builder; } return $builders; }