Bravo3\Orm\Services\QueryManager::sortedQuery PHP Метод

sortedQuery() публичный Метод

If you have applied a limit to the query but need to know the full size of the unfiltered set, you must set $check_full_set_size to true to gather this information at the expense of a second database query.
public sortedQuery ( SortedQuery $query, boolean $check_full_set_size = false, boolean $use_cache = true ) : QueryResult
$query Bravo3\Orm\Query\SortedQuery
$check_full_set_size boolean
$use_cache boolean
Результат Bravo3\Orm\Query\QueryResult
    public function sortedQuery(SortedQuery $query, $check_full_set_size = false, $use_cache = true)
    {
        $metadata = $this->getMapper()->getEntityMetadata($query->getClassName());
        if ($query->getRelationshipName()) {
            // Entity relationship based query
            $reader = new Reader($metadata, $query->getEntity());
            $relationship = $metadata->getRelationshipByName($query->getRelationshipName());
            if (!$relationship) {
                throw new InvalidArgumentException('Relationship "' . $query->getRelationshipName() . '" does not exist');
            }
            // Important, else the QueryResult class will try to hydrate the wrong entity
            $query->setClassName($relationship->getTarget());
            $key = $this->getSortIndexKey($relationship, $query->getSortBy(), $reader->getId());
        } else {
            // Table based query
            $key = $this->getKeyScheme()->getTableSortKey($metadata->getTableName(), $query->getSortBy());
        }
        $results = $this->getDriver()->getSortedIndex($key, $query->getDirection() == Direction::DESC(), $query->getStart(), $query->getEnd());
        if (!$query->getStart() && !$query->getEnd()) {
            $full_size = count($results);
        } elseif ($check_full_set_size) {
            $full_size = $this->getDriver()->getSortedIndexSize($key);
        } else {
            $full_size = null;
        }
        return new QueryResult($this->entity_manager, $query, $results, $full_size, $use_cache);
    }