/** * @param ModelCriteria $search * * @return ObjectCollection */ protected function searchWithOffset(ModelCriteria $search) { $limit = intval($this->getArgValue('limit')); if ($limit >= 0) { $search->limit($limit); } $search->offset(intval($this->getArgValue('offset'))); return $search->find(); }
public function testOffset() { $c = new ModelCriteria('bookstore', 'Propel\\Tests\\Bookstore\\Book'); $c->limit(50); $c->offset(10); if ($this->isDb('mysql')) { $sql = 'SELECT FROM LIMIT 10, 50'; } else { $sql = 'SELECT FROM LIMIT 50 OFFSET 10'; } $params = array(); $this->assertCriteriaTranslation($c, $sql, $params, 'offset() adds an OFFSET clause'); }
/** * Maps options like limit, offset, order * * @param ModelCriteria $query * @param array $options * * @throws FileNotFoundException */ public function mapOptions(ModelCriteria $query, $options = array()) { if (isset($options['limit'])) { $query->limit($options['limit']); } if (isset($options['offset'])) { $query->offset($options['offset']); } if (isset($options['order']) && is_array($options['order'])) { foreach ($options['order'] as $field => $direction) { $fieldName = ucfirst($field); $tableMap = $this->tableMap; if (false !== ($pos = strpos($field, '.'))) { $relationName = ucfirst(substr($field, 0, $pos)); $fieldName = ucfirst(substr($field, $pos + 1)); if (!($relation = $this->tableMap->getRelation($relationName))) { throw new FileNotFoundException(sprintf('Relation `%s` in object `%s` not found', $relationName, $this->getObjectKey())); } $tableMap = $relation->getForeignTable(); } if ($tableMap->hasColumnByPhpName(ucfirst($fieldName))) { $column = $this->tableMap->getColumnByPhpName(ucfirst($fieldName)); $query->orderBy($column->getName(), $direction); } } } }