コード例 #1
0
ファイル: Mapper.php プロジェクト: janmarek/Ormion
 /**
  * Update record
  * @param IRecord record
  */
 public function update(IRecord $record)
 {
     try {
         $record->onBeforeUpdate($record);
         $config = $this->getConfig();
         $columns = array_intersect($config->getColumns(), $record->getModified());
         foreach ($columns as $column) {
             $values[$column . "%" . $config->getType($column)] = $record->{$column};
         }
         if (isset($values)) {
             $this->getDb()->update($this->table, $values)->where($record->getValues($config->getPrimaryColumns()))->execute();
             $record->clearModified();
         }
         foreach ($this->associations as $name => $association) {
             if ($record->isAssociationLoaded($name)) {
                 $association->saveReferenced($record, $record->{$name});
             }
         }
         $record->onAfterUpdate($record);
     } catch (\Exception $e) {
         throw new \ModelException("Update failed. " . $e->getMessage(), $e->getCode(), $e);
     }
 }