/** * Save (update) model to database * * Only modified fields will be updated * Triggers NOTICE when no need to update * * @return mixed model's primary key value */ public function update() { $update = array(); foreach ($this->fields as $key => $field) { $finalColumn = $field->getRealName() . '%' . $field->getType(); if ($field->isPrimaryKey()) { $primaryKey = $field->getRealName(); $primaryKeyValue = $field->getDbValue(false); $primaryKeyType = $field->getType(); } elseif (!is_null($dbValue = $field->getDbValue(false)) && $field->isModified()) { $update[$finalColumn] = $dbValue; } elseif ($field->getNullCallback()) { $update[$finalColumn] = $dbValue; } } if (count($update) > 0) { #Debug::barDump($update, 'update array'); PerfORMController::queryAndLog('update %n set', $this->getTableName(), $update, "where %n = %{$primaryKeyType}", $primaryKey, $primaryKeyValue); $this->setUnmodified(); return $primaryKeyValue; } else { trigger_error("The model '" . get_class($this) . "' has no unmodified data to update", E_USER_NOTICE); } }