. */ /** * UpdateClause = "UPDATE" VariableDeclaration "SET" UpdateItem {"," UpdateItem} * * @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_UpdateClause extends Doctrine_Query_Production { protected $_variableDeclaration; protected $_updateItems = array(); public function syntax($paramHolder) { // UpdateClause = "UPDATE" VariableDeclaration "SET" UpdateItem {"," UpdateItem} $this->_parser->match(Doctrine_Query_Token::T_UPDATE); $this->_variableDeclaration = $this->AST('VariableDeclaration', $paramHolder); $this->_parser->match(Doctrine_Query_Token::T_SET); $this->_updateItems[] = $this->AST('UpdateItem', $paramHolder); while ($this->_isNextToken(',')) { $this->_parser->match(','); $this->_updateItems[] = $this->AST('UpdateItem', $paramHolder); } } public function buildSql() { return 'UPDATE ' . $this->_variableDeclaration->buildSql() . ' SET ' . implode(', ', $this->_mapUpdateItems()); } protected function _mapUpdateItems() { return array_map(array(&$this, '_mapUpdateItem'), $this->_updateItems); } protected function _mapUpdateItem($value) { return $value->buildSql(); } }