| 
<?php/**
 * *
 *  * please don't remove this comment block
 *  *
 *  * @author phptricks Team - Mohammad Anzawi
 *  * @author_uri https://phptricks.org
 *  * @uri https://github.com/anzawi/php-database-class
 *  * @version 5.0.0
 *  * @licence MIT -> https://opensource.org/licenses/MIT
 *  * @package PHPtricks\Orm
 *
 */
 
 namespace PHPtricks\Orm\DML;
 
 trait Update
 {
 
 /**
 * @param $prop
 *
 * @return mixed
 */
 public function __get($prop)
 {
 return isset($this->_results->$prop) ? $this->_results->$prop : null;
 }
 
 public function __set($prop, $value)
 {
 if (isset($this->_results->$prop)) {
 if ( ! is_null($this->_newValues)) {
 $this->_newValues->$prop = $value;
 } else {
 $this->_newValues        = new \stdClass();
 $this->_newValues->$prop = $value;
 }
 }
 }
 
 public function save()
 {
 $x            = 1;
 $this->_query = "WHERE";
 
 foreach ($this->results() as $i => $row) {
 if ( ! is_numeric($row)) {
 $this->_query .= " {$i} = '{$row}'";
 } else {
 $this->_query .= " {$i} = {$row}";
 }
 // add comma between values
 if ($x < count((array) $this->results())) {
 $this->_query .= " AND";
 }
 
 $x++;
 }
 
 return $this->update((array) $this->getNewValues());
 }
 
 /**
 * DB::update()
 *
 * @param  string  $table
 * @param  array  $values
 * @param  array  $where
 *
 * @return bool
 */
 public function update($values = [])
 {
 /**
 * @var $set type string
 * store update value
 * @example "column = value"
 */
 $set = ''; // initialize $set
 $x   = 1;
 // initialize fields and values
 foreach ($values as $i => $row) {
 $set .= "{$i} = ?";
 // add comma between values
 if ($x < count($values)) {
 $set .= " ,";
 }
 $x++;
 }
 // generate sql statement
 $sql = "UPDATE {$this->_table} SET {$set} ".$this->_query;
 // check if query is not have an error
 if ( ! $this->query($sql, $values)->error()) {
 return true;
 }
 
 return false;
 }
 
 private function getNewValues()
 {
 return $this->_newValues;
 }
 
 }
 |