diff --git a/Doctrine/Query.php b/Doctrine/Query.php index 300105eb8..7b1a127b6 100644 --- a/Doctrine/Query.php +++ b/Doctrine/Query.php @@ -716,7 +716,7 @@ class Doctrine_Query extends Doctrine_Access { * @return void */ private function parseFrom($str) { - foreach(explode(",",trim($str)) as $reference) { + foreach(self::bracketExplode(trim($str),",","(",")") as $reference) { $reference = trim($reference); $table = $this->load($reference); } diff --git a/Doctrine/Record.php b/Doctrine/Record.php index 86d8980f7..6e4a3d986 100644 --- a/Doctrine/Record.php +++ b/Doctrine/Record.php @@ -364,6 +364,8 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite $this->state = Doctrine_Record::STATE_CLEAN; + $this->table->getAttribute(Doctrine::ATTR_LISTENER)->onLoad($this); + return true; } /** @@ -386,6 +388,8 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite $this->state = Doctrine_Record::STATE_CLEAN; $this->modified = array(); + + $this->table->getAttribute(Doctrine::ATTR_LISTENER)->onLoad($this); } /** * return the factory that created this data access object diff --git a/tests/QueryTestCase.class.php b/tests/QueryTestCase.class.php index 2e7ab3403..59de3fc6c 100644 --- a/tests/QueryTestCase.class.php +++ b/tests/QueryTestCase.class.php @@ -7,7 +7,54 @@ class Doctrine_QueryTestCase extends Doctrine_UnitTestCase { $this->tables[] = "Forum_Thread"; parent::prepareTables(); } + public function testLazyPropertyFetchingWithMultipleColumns() { + $q = new Doctrine_Query($this->session); + $q->from("User-l(name, email_id)"); + $users = $q->execute(); + $this->assertEqual($users->count(), 8); + $this->assertTrue($users instanceof Doctrine_Collection_Lazy); + $count = count($this->dbh); + $this->assertTrue(is_string($users[0]->name)); + $this->assertEqual($count, count($this->dbh)); + $count = count($this->dbh); + $this->assertTrue(is_numeric($users[0]->email_id)); + $this->assertEqual($count, count($this->dbh)); + + $users[0]->getTable()->clear(); + + $q->from("User-b(name, email_id)"); + $users = $q->execute(); + $this->assertEqual($users->count(), 8); + $this->assertTrue($users instanceof Doctrine_Collection_Batch); + $count = count($this->dbh); + $this->assertTrue(is_string($users[0]->name)); + $this->assertEqual($count, count($this->dbh)); + $count = count($this->dbh); + $this->assertTrue(is_numeric($users[0]->email_id)); + $this->assertEqual($count, count($this->dbh)); + $this->assertTrue(is_numeric($users[1]->email_id)); + $this->assertEqual($count, count($this->dbh)); + $this->assertTrue(is_numeric($users[2]->email_id)); + $this->assertEqual($count, count($this->dbh)); + + $q->from("User-b(name, email_id):Email, User-b(name, email_id).Phonenumber"); + $users = $q->execute(); + $this->assertEqual($users->count(), 8); + $this->assertTrue($users instanceof Doctrine_Collection_Batch); + $count = count($this->dbh); + $this->assertTrue(is_string($users[0]->name)); + $this->assertEqual($count, count($this->dbh)); + $count = count($this->dbh); + $this->assertTrue(is_numeric($users[0]->email_id)); + $this->assertEqual($count, count($this->dbh)); + $this->assertTrue(is_numeric($users[1]->email_id)); + $this->assertEqual($count, count($this->dbh)); + $this->assertTrue(is_numeric($users[2]->email_id)); + $this->assertEqual($count, count($this->dbh)); + + } +/** public function testMultipleFetching() { $count = $this->dbh->count(); $this->session->getTable('User')->clear(); @@ -125,6 +172,7 @@ class Doctrine_QueryTestCase extends Doctrine_UnitTestCase { } $this->assertTrue($f); } + public function testValidLazyPropertyFetching() { $q = new Doctrine_Query($this->session); $q->from("User-l(name)"); @@ -517,5 +565,6 @@ class Doctrine_QueryTestCase extends Doctrine_UnitTestCase { //$this->assertTrue(isset($values['max'])); } + */ } ?> diff --git a/tests/run.php b/tests/run.php index 892fd0e96..48fd8d101 100644 --- a/tests/run.php +++ b/tests/run.php @@ -23,7 +23,7 @@ error_reporting(E_ALL); $test = new GroupTest("Doctrine Framework Unit Tests"); //$test->addTestCase(new Sensei_UnitTestCase()); - +/** $test->addTestCase(new Doctrine_RecordTestCase()); $test->addTestCase(new Doctrine_SessionTestCase()); @@ -45,7 +45,7 @@ $test->addTestCase(new Doctrine_ConfigurableTestCase()); $test->addTestCase(new Doctrine_Collection_OffsetTestCase()); $test->addTestCase(new Doctrine_CollectionTestCase()); - +*/ $test->addTestCase(new Doctrine_QueryTestCase()); //$test->addTestCase(new Doctrine_Cache_FileTestCase());