Go to the documentation of this file.00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00015 final class UpdateQuery
00016 extends InsertOrUpdateQuery
00017 implements JoinCapableQuery
00018 {
00019 private $joiner = null;
00020
00021 public function __construct($table = null)
00022 {
00023 $this->table = $table;
00024 $this->joiner = new Joiner();
00025 }
00026
00027 public function __clone()
00028 {
00029 $this->joiner = clone $this->joiner;
00030 }
00031
00035 public function from($table, $alias = null)
00036 {
00037 $this->joiner->from(new FromTable($table, $alias));
00038
00039 return $this;
00040 }
00041
00042 public function hasJoinedTable($table)
00043 {
00044 return $this->joiner->hasJoinedTable($table);
00045 }
00046
00050 public function join($table, LogicalObject $logic, $alias = null)
00051 {
00052 $this->joiner->join(new SQLJoin($table, $logic, $alias));
00053 return $this;
00054 }
00055
00059 public function leftJoin($table, LogicalObject $logic, $alias = null)
00060 {
00061 $this->joiner->leftJoin(new SQLLeftJoin($table, $logic, $alias));
00062 return $this;
00063 }
00064
00068 public function rightJoin($table, LogicalObject $logic, $alias = null)
00069 {
00070 $this->joiner->rightJoin(new SQLRightJoin($table, $logic, $alias));
00071 return $this;
00072 }
00073
00077 public function setTable($table)
00078 {
00079 $this->table = $table;
00080
00081 return $this;
00082 }
00083
00084 public function toDialectString(Dialect $dialect)
00085 {
00086 $query = 'UPDATE '.$dialect->quoteTable($this->table).' SET ';
00087
00088 $sets = array();
00089
00090 foreach ($this->fields as $var => $val) {
00091 if ($val instanceof DialectString)
00092 $sets[] =
00093 $dialect->quoteField($var)
00094 .' = ('
00095 .$val->toDialectString($dialect)
00096 .')';
00097 elseif ($val === null)
00098 $sets[] = $dialect->quoteField($var).' = NULL';
00099 elseif (true === $val)
00100 $sets[] = $dialect->quoteField($var).' = TRUE';
00101 elseif (false === $val)
00102 $sets[] = $dialect->quoteField($var).' = FALSE';
00103 else
00104 $sets[] =
00105 $dialect->quoteField($var)
00106 .' = '
00107 .$dialect->quoteValue($val);
00108 }
00109
00110 return
00111 $query
00112 .implode(', ', $sets)
00113 .$this->joiner->toDialectString($dialect)
00114 .parent::toDialectString($dialect);
00115 }
00116 }
00117 ?>