예제 #1
0
 public function createOrUpdate($data)
 {
     $additionalFields = array();
     foreach ($data as $field => $value) {
         if (!in_array($field, $this->filterThisFields)) {
             $additionalFields[$field] = $value;
             unset($data[$field]);
         }
     }
     $connection = Propel::getConnection(AbeRequestsPeer::DATABASE_NAME);
     try {
         if (!isset($data['ABE_REQ_UID'])) {
             $data['ABE_REQ_UID'] = '';
         }
         if ($data['ABE_REQ_UID'] == '') {
             $data['ABE_REQ_UID'] = G::generateUniqueID();
             $data['ABE_REQ_DATE'] = date('Y-m-d H:i:s');
             $AbeRequestsInstance = new AbeRequests();
         } else {
             $AbeRequestsInstance = AbeRequestsPeer::retrieveByPK($data['ABE_REQ_UID']);
         }
         $AbeRequestsInstance->fromArray($data, BasePeer::TYPE_FIELDNAME);
         if ($AbeRequestsInstance->validate()) {
             $connection->begin();
             $result = $AbeRequestsInstance->save();
             $connection->commit();
             return $data['ABE_REQ_UID'];
         } else {
             $message = '';
             $validationFailures = $AbeRequestsInstance->getValidationFailures();
             foreach ($validationFailures as $validationFailure) {
                 $message .= $validationFailure->getMessage() . '. ';
             }
             throw new Exception('Error trying to update: ' . $message);
         }
     } catch (Exception $error) {
         $connection->rollback();
         throw $error;
     }
 }