Pinq\Providers\Utilities\QueryResultCollection::optimizeQuery PHP Метод

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

public optimizeQuery ( Expression $queryExpression )
$queryExpression Pinq\Expressions\Expression
    public function optimizeQuery(O\Expression $queryExpression)
    {
        //Converts all values requests (->asArray(), ->asIterator(), ->asCollection(), ->asTraversable())
        //to ->asTrueIterator() such that the true underlying values are retrieved
        //and hence can be cached as a Traversable instance such that any queries
        //on scoped values can be evaluated in memory using the traversable implementation.
        if ($queryExpression instanceof O\MethodCallExpression) {
            $nameExpression = $queryExpression->getName();
            if ($nameExpression instanceof O\ValueExpression) {
                switch (strtolower($nameExpression->getValue())) {
                    case 'asarray':
                    case 'asiterator':
                    case 'ascollection':
                    case 'astraversable':
                        return $queryExpression->update($queryExpression->getValue(), O\Expression::value('getTrueIterator'), $queryExpression->getArguments());
                }
            }
        }
        return $queryExpression;
    }

Usage Example

Пример #1
0
 public function testOptimizeQueryReturnsExpression()
 {
     $this->assertInstanceOf(O\Expression::getType(), $this->queryResultsCollection->optimizeQuery($this->queryable->getExpression()));
     $this->assertInstanceOf(O\Expression::getType(), $this->queryResultsCollection->optimizeQuery($this->queryable->take(1)->select('strlen')->getExpression()));
 }