From 4d0310bfd5b33989eac91b65482bc9128a881b4c Mon Sep 17 00:00:00 2001 From: zYne Date: Mon, 4 Jun 2007 22:38:39 +0000 Subject: [PATCH] --- lib/Doctrine/Collection.php | 4 ++++ lib/Doctrine/Hydrate/Record.php | 13 +++++++++++++ lib/Doctrine/Record.php | 15 ++++++++++----- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/lib/Doctrine/Collection.php b/lib/Doctrine/Collection.php index 446b74d1a..812a3330d 100644 --- a/lib/Doctrine/Collection.php +++ b/lib/Doctrine/Collection.php @@ -277,6 +277,10 @@ class Doctrine_Collection extends Doctrine_Access implements Countable, Iterator { return isset($this->data[$key]); } + public function search(Doctrine_Record $record) + { + return array_search($record, $this->data, true); + } /** * get * returns a record for given key diff --git a/lib/Doctrine/Hydrate/Record.php b/lib/Doctrine/Hydrate/Record.php index dbe87e32f..547a3611c 100644 --- a/lib/Doctrine/Hydrate/Record.php +++ b/lib/Doctrine/Hydrate/Record.php @@ -46,6 +46,19 @@ class Doctrine_Hydrate_Record return $coll; } + public function search(Doctrine_Record $record, Doctrine_Collection $coll) + { + return array_search($record, $coll->getData(), true); + } + public function initRelated($record, $name) + { + if ( ! is_array($record)) { + $record[$name]; + + return true; + } + return false; + } public function registerCollection(Doctrine_Collection $coll) { $this->_collections[] = $coll; diff --git a/lib/Doctrine/Record.php b/lib/Doctrine/Record.php index 777c8cc18..b5d37d7fe 100644 --- a/lib/Doctrine/Record.php +++ b/lib/Doctrine/Record.php @@ -690,11 +690,11 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite * returns a value of a property or a related component * * @param mixed $name name of the property or related component - * @param boolean $invoke whether or not to invoke the onGetProperty listener + * @param boolean $load whether or not to invoke the loading procedure * @throws Doctrine_Record_Exception if trying to get a value of unknown property / related component * @return mixed */ - public function get($name, $invoke = true) + public function get($name, $load = true) { $value = self::$_null; $lower = strtolower($name); @@ -726,9 +726,14 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite } try { - if ( ! isset($this->_references[$name])) { - $this->loadReference($name); + + if ( ! isset($this->_references[$name]) && $load) { + + $rel = $this->_table->getRelation($name); + + $this->_references[$name] = $rel->fetchRelatedFor($this); } + } catch(Doctrine_Table_Exception $e) { throw new Doctrine_Record_Exception("Unknown property / related component '$name'."); } @@ -816,7 +821,7 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite // one-to-many or one-to-one relation if ($rel instanceof Doctrine_Relation_ForeignKey || - $rel instanceof Doctrine_Relation_LocalKey) { + $rel instanceof Doctrine_Relation_LocalKey) { if ( ! $rel->isOneToOne()) { // one-to-many relation found if ( ! ($value instanceof Doctrine_Collection)) {