DB\SQL\Mapper::update PHP Метод

update() публичный Метод

Update current record
public update ( ) : object
Результат object
    function update()
    {
        $args = [];
        $ctr = 0;
        $pairs = '';
        $filter = '';
        $pkeys = [];
        foreach ($this->fields as $key => $field) {
            if ($field['pkey']) {
                $pkeys[$key] = $field['previous'];
            }
        }
        if (isset($this->trigger['beforeupdate']) && \Base::instance()->call($this->trigger['beforeupdate'], [$this, $pkeys]) === FALSE) {
            return $this;
        }
        foreach ($this->fields as $key => $field) {
            if ($field['changed']) {
                $pairs .= ($pairs ? ',' : '') . $this->db->quotekey($key) . '=?';
                $args[++$ctr] = [$field['value'], $field['pdo_type']];
            }
        }
        foreach ($this->fields as $key => $field) {
            if ($field['pkey']) {
                $filter .= ($filter ? ' AND ' : ' WHERE ') . $this->db->quotekey($key) . '=?';
                $args[++$ctr] = [$field['previous'], $field['pdo_type']];
            }
        }
        if ($pairs) {
            $sql = 'UPDATE ' . $this->table . ' SET ' . $pairs . $filter;
            $this->db->exec($sql, $args);
            if (isset($this->trigger['afterupdate'])) {
                \Base::instance()->call($this->trigger['afterupdate'], [$this, $pkeys]);
            }
        }
        // reset changed flag after calling afterupdate
        foreach ($this->fields as $key => &$field) {
            $field['changed'] = FALSE;
            $field['initial'] = $field['value'];
            unset($field);
        }
        return $this;
    }