<?php defined('SYSPATH') OR die('No direct script access.'); /** * Database query builder for UPDATE statements. See [Query Builder](/database/query/builder) for usage and examples. * * @package Kohana/Database * @category Query * @author Kohana Team * @copyright (c) 2008-2009 Kohana Team * @license http://kohanaphp.com/license */ class Kohana_Database_Query_Builder_Update extends Database_Query_Builder_Where { // UPDATE ... protected $_table; // SET ... protected $_set = array(); /** * Set the table for a update. * * @param mixed $table table name or array($table, $alias) or object * @return void */ public function __construct($table = NULL) { if ($table) { // Set the inital table name $this->_table = $table; } // Start the query with no SQL return parent::__construct(Database::UPDATE, ''); } /** * Sets the table to update. * * @param mixed $table table name or array($table, $alias) or object * @return $this */ public function table($table) { $this->_table = $table; return $this; } /** * Set the values to update with an associative array. * * @param array $pairs associative (column => value) list * @return $this */ public function set(array $pairs) { foreach ($pairs as $column => $value) { $this->_set[] = array($column, $value); } return $this; } /** * Set the value of a single column. * * @param mixed $column table name or array($table, $alias) or object * @param mixed $value column value * @return $this */ public function value($column, $value) { $this->_set[] = array($column, $value); return $this; } /** * Compile the SQL query and return it. * * @param mixed $db Database instance or name of instance * @return string */ public function compile($db = NULL) { if ( ! is_object($db)) { // Get the database instance $db = Database::instance($db); } // Start an update query $query = 'UPDATE '.$db->quote_table($this->_table); // Add the columns to update $query .= ' SET '.$this->_compile_set($db, $this->_set); if ( ! empty($this->_where)) { // Add selection conditions $query .= ' WHERE '.$this->_compile_conditions($db, $this->_where); } if ( ! empty($this->_order_by)) { // Add sorting $query .= ' '.$this->_compile_order_by($db, $this->_order_by); } if ($this->_limit !== NULL) { // Add limiting $query .= ' LIMIT '.$this->_limit; } $this->_sql = $query; return parent::compile($db); } public function reset() { $this->_table = NULL; $this->_set = $this->_where = array(); $this->_limit = NULL; $this->_parameters = array(); $this->_sql = NULL; return $this; } } // End Database_Query_Builder_Update