<?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; 
    } 
 
}
 
 |