123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <?php
- /**
- * 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) Kohana Team
- * @license https://koseven.ga/LICENSE.md
- */
- class Kohana_Database_Query_Builder_Update extends Database_Query_Builder_Where {
- // UPDATE ...
- protected $_table;
- // SET ...
- protected $_set = [];
- /**
- * 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[] = [$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[] = [$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 = [];
- $this->_limit = NULL;
- $this->_parameters = [];
- $this->_sql = NULL;
- return $this;
- }
- } // End Database_Query_Builder_Update
|