Browse Source

Refactored AR code.

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

52
framework/yii/db/ActiveRecord.php

@ -749,21 +749,21 @@ 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) {
try { $transaction = $db->beginTransaction();
$result = $this->insertInternal($attributes); try {
if ($transaction !== null) { $result = $this->insertInternal($attributes);
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,21 +859,21 @@ 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) {
try { $transaction = $db->beginTransaction();
$result = $this->updateInternal($attributes); try {
if ($transaction !== null) { $result = $this->updateInternal($attributes);
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