diff --git a/lib/Doctrine/Record.php b/lib/Doctrine/Record.php index 279b6edaa..955cd2b45 100644 --- a/lib/Doctrine/Record.php +++ b/lib/Doctrine/Record.php @@ -126,13 +126,14 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite * open connections * @throws Doctrine_Record_Exception if the cleanData operation fails somehow */ - public function __construct($table = null, $isNewEntry = false) { + public function __construct($table = null) { if(isset($table) && $table instanceof Doctrine_Table) { $this->_table = $table; + $exists = ( ! $this->_table->isNewEntry()); } else { $this->_table = Doctrine_Manager::getInstance()->getCurrentConnection()->getTable(get_class($this)); + $exists = false; } - $exists = !$isNewEntry; // Check if the current connection has the records table in its registry // If not this record is only used for creating table definition and setting up diff --git a/lib/Doctrine/Table.php b/lib/Doctrine/Table.php index ae41e40e3..f34c3f4f2 100644 --- a/lib/Doctrine/Table.php +++ b/lib/Doctrine/Table.php @@ -31,6 +31,10 @@ * @version 1.0 alpha */ class Doctrine_Table extends Doctrine_Configurable implements Countable { + /** + * @var boolean $isNewEntry whether ot not this table created a new record or not, used only internally + */ + private $isNewEntry = false; /** * @var array $data temporary data which is then loaded into Doctrine_Record::$data */ @@ -757,7 +761,9 @@ class Doctrine_Table extends Doctrine_Configurable implements Countable { */ public function create(array $array = array()) { $this->data = $array; - $record = new $this->options['name']($this, true); + $this->isNewEntry = true; + $record = new $this->options['name']($this); + $this->isNewEntry = false; $this->data = array(); return $record; } @@ -1102,6 +1108,14 @@ class Doctrine_Table extends Doctrine_Configurable implements Countable { $data = $stmt->fetch(PDO::FETCH_NUM); return isset($data[0])?$data[0]:1; } + /** + * return whether or not a newly created object is new or not + * + * @return boolean + */ + final public function isNewEntry() { + return $this->isNewEntry; + } /** * returns simple cached query *