. */ /** * OrderByClause = "ORDER" "BY" OrderByItem {"," OrderByItem} * * @package Doctrine * @subpackage Query * @author Guilherme Blanco * @author Janne Vanhala * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://www.phpdoctrine.org * @since 1.0 * @version $Revision$ */ class Doctrine_Query_Production_OrderByClause extends Doctrine_Query_Production { protected $_orderByItems = array(); public function syntax($paramHolder) { $this->_parser->match(Doctrine_Query_Token::T_ORDER); $this->_parser->match(Doctrine_Query_Token::T_BY); $this->_orderByItems[] = $this->AST('OrderByItem', $paramHolder); while ($this->_isNextToken(',')) { $this->_parser->match(','); $this->_orderByItems[] = $this->AST('OrderByItem', $paramHolder); } } public function buildSql() { $str = 'ORDER BY '; for ($i = 0, $l = count($this->_orderByItems); $i < $l; $i++) { if ($i != 0) { $str .= ', '; } $str .= ( $this->_orderByItems[$i] instanceof Doctrine_Query_Production ) ? $this->_orderByItems[$i]->buildSql() : $this->_orderByItems[$i]; } return $str; } }