Doctrine\ORM\Query\Parser::OrderByClause PHP Method

OrderByClause() public method

OrderByClause ::= "ORDER" "BY" OrderByItem {"," OrderByItem}*
public OrderByClause ( ) : Doctrine\ORM\Query\AST\OrderByClause
return Doctrine\ORM\Query\AST\OrderByClause
    public function OrderByClause()
    {
        $this->match(Lexer::T_ORDER);
        $this->match(Lexer::T_BY);

        $orderByItems = array();
        $orderByItems[] = $this->OrderByItem();

        while ($this->_lexer->isNextToken(Lexer::T_COMMA)) {
            $this->match(Lexer::T_COMMA);
            $orderByItems[] = $this->OrderByItem();
        }

        return new AST\OrderByClause($orderByItems);
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * @url http://sysmagazine.com/posts/181666/
  *
  * {@inheritdoc}
  */
 public function parse(Parser $parser)
 {
     $parser->match(Lexer::T_IDENTIFIER);
     $parser->match(Lexer::T_OPEN_PARENTHESIS);
     $lexer = $parser->getLexer();
     if ($lexer->isNextToken(Lexer::T_DISTINCT)) {
         $parser->match(Lexer::T_DISTINCT);
         $this->parameters[self::DISTINCT_KEY] = true;
     }
     // first Path Expression is mandatory
     $this->parameters[self::PARAMETER_KEY] = array();
     $this->parameters[self::PARAMETER_KEY][] = $parser->SingleValuedPathExpression();
     while ($lexer->isNextToken(Lexer::T_COMMA)) {
         $parser->match(Lexer::T_COMMA);
         $this->parameters[self::PARAMETER_KEY][] = $parser->StringPrimary();
     }
     if ($lexer->isNextToken(Lexer::T_ORDER)) {
         $this->parameters[self::ORDER_KEY] = $parser->OrderByClause();
     }
     if ($lexer->isNextToken(Lexer::T_IDENTIFIER)) {
         if (strtolower($lexer->lookahead['value']) !== 'separator') {
             $parser->syntaxError('separator');
         }
         $parser->match(Lexer::T_IDENTIFIER);
         $this->parameters[self::SEPARATOR_KEY] = $parser->StringPrimary();
     }
     $parser->match(Lexer::T_CLOSE_PARENTHESIS);
 }
All Usage Examples Of Doctrine\ORM\Query\Parser::OrderByClause
Parser