57 lines
1.1 KiB
PHP
57 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace PicoDb\Builder;
|
|
|
|
/**
|
|
* Class UpdateBuilder
|
|
*
|
|
* @package PicoDb\Builder
|
|
* @author Frederic Guillot
|
|
*/
|
|
class UpdateBuilder extends BaseBuilder
|
|
{
|
|
/**
|
|
* @var string[]
|
|
*/
|
|
protected $sumColumns = array();
|
|
|
|
/**
|
|
* Set columns name
|
|
*
|
|
* @access public
|
|
* @param string[] $columns
|
|
* @return $this
|
|
*/
|
|
public function withSumColumns(array $columns)
|
|
{
|
|
$this->sumColumns = $columns;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Build SQL
|
|
*
|
|
* @access public
|
|
* @return string
|
|
*/
|
|
public function build()
|
|
{
|
|
$columns = array();
|
|
|
|
foreach ($this->columns as $column) {
|
|
$columns[] = $this->db->escapeIdentifier($column).'=?';
|
|
}
|
|
|
|
foreach ($this->sumColumns as $column) {
|
|
$columns[] = $this->db->escapeIdentifier($column).'='.$this->db->escapeIdentifier($column).' + ?';
|
|
}
|
|
|
|
return sprintf(
|
|
'UPDATE %s SET %s %s',
|
|
$this->db->escapeIdentifier($this->table),
|
|
implode(', ', $columns),
|
|
$this->conditionBuilder->build()
|
|
);
|
|
}
|
|
}
|