コード例 #1
0
ファイル: Mapper.php プロジェクト: janmarek/Ormion
 /**
  * Inser record into database
  * @param IRecord record
  */
 public function insert(IRecord $record)
 {
     try {
         $record->onBeforeInsert($record);
         $values = array();
         $config = $this->getConfig();
         foreach ($config->getColumns() as $column) {
             if ($record->hasValue($column)) {
                 $values[$column . "%" . $config->getType($column)] = $record->{$column};
             }
         }
         // do query
         $this->getDb()->insert($this->table, $values)->execute();
         // fill auto increment primary key
         if ($config->isPrimaryAutoIncrement()) {
             $record[$config->getPrimaryColumn()] = $this->getDb()->getInsertId();
         }
         // set state
         $record->setState(IRecord::STATE_EXISTING);
         $record->clearModified();
         foreach ($this->associations as $name => $association) {
             if ($record->isAssociationLoaded($name)) {
                 $association->saveReferenced($record, $record->{$name});
             }
         }
         $record->onAfterInsert($record);
     } catch (\Exception $e) {
         throw new \ModelException("Insert failed. " . $e->getMessage(), $e->getCode(), $e);
     }
 }