Exemple #1
0
 /**
  * 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);
     }
 }