Browse Source

Refactored AR code.

tags/2.0.0-beta
Qiang Xue 11 years ago
parent
commit
c6f4dac249
  1. 40
      framework/yii/db/ActiveRecord.php

40
framework/yii/db/ActiveRecord.php

@ -749,22 +749,22 @@ class ActiveRecord extends Model
return false; return false;
} }
$db = static::getDb(); $db = static::getDb();
$transaction = $this->isTransactional(self::OP_INSERT) && $db->getTransaction() === null ? $db->beginTransaction() : null; if ($this->isTransactional(self::OP_INSERT) && $db->getTransaction() === null) {
$transaction = $db->beginTransaction();
try { try {
$result = $this->insertInternal($attributes); $result = $this->insertInternal($attributes);
if ($transaction !== null) {
if ($result === false) { if ($result === false) {
$transaction->rollback(); $transaction->rollback();
} else { } else {
$transaction->commit(); $transaction->commit();
} }
}
} catch (\Exception $e) { } catch (\Exception $e) {
if ($transaction !== null) {
$transaction->rollback(); $transaction->rollback();
}
throw $e; throw $e;
} }
} else {
$result = $this->insertInternal($attributes);
}
return $result; return $result;
} }
@ -859,22 +859,22 @@ class ActiveRecord extends Model
return false; return false;
} }
$db = static::getDb(); $db = static::getDb();
$transaction = $this->isTransactional(self::OP_UPDATE) && $db->getTransaction() === null ? $db->beginTransaction() : null; if ($this->isTransactional(self::OP_UPDATE) && $db->getTransaction() === null) {
$transaction = $db->beginTransaction();
try { try {
$result = $this->updateInternal($attributes); $result = $this->updateInternal($attributes);
if ($transaction !== null) {
if ($result === false) { if ($result === false) {
$transaction->rollback(); $transaction->rollback();
} else { } else {
$transaction->commit(); $transaction->commit();
} }
}
} catch (\Exception $e) { } catch (\Exception $e) {
if ($transaction !== null) {
$transaction->rollback(); $transaction->rollback();
}
throw $e; throw $e;
} }
} else {
$result = $this->updateInternal($attributes);
}
return $result; return $result;
} }
@ -1010,6 +1010,16 @@ class ActiveRecord extends Model
} }
/** /**
* Sets the value indicating whether the record is new.
* @param boolean $value whether the record is new and should be inserted when calling [[save()]].
* @see getIsNewRecord
*/
public function setIsNewRecord($value)
{
$this->_oldAttributes = $value ? null : $this->_attributes;
}
/**
* Initializes the object. * Initializes the object.
* This method is called at the end of the constructor. * This method is called at the end of the constructor.
* The default implementation will trigger an [[EVENT_INIT]] event. * The default implementation will trigger an [[EVENT_INIT]] event.
@ -1034,16 +1044,6 @@ class ActiveRecord extends Model
} }
/** /**
* Sets the value indicating whether the record is new.
* @param boolean $value whether the record is new and should be inserted when calling [[save()]].
* @see getIsNewRecord
*/
public function setIsNewRecord($value)
{
$this->_oldAttributes = $value ? null : $this->_attributes;
}
/**
* This method is called at the beginning of inserting or updating a record. * This method is called at the beginning of inserting or updating a record.
* The default implementation will trigger an [[EVENT_BEFORE_INSERT]] event when `$insert` is true, * The default implementation will trigger an [[EVENT_BEFORE_INSERT]] event when `$insert` is true,
* or an [[EVENT_BEFORE_UPDATE]] event if `$insert` is false. * or an [[EVENT_BEFORE_UPDATE]] event if `$insert` is false.

Loading…
Cancel
Save