[limb-svn] r6908 - in 3.x/trunk/limb/active_record: src tests/cases
svn at limb-project.com
svn at limb-project.com
Thu Apr 10 11:33:05 MSD 2008
Author: serega
Date: 2008-04-10 11:33:05 +0400 (Thu, 10 Apr 2008)
New Revision: 6908
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6908
Modified:
3.x/trunk/limb/active_record/src/lmbARRecordSetAttachDecorator.class.php
3.x/trunk/limb/active_record/src/lmbARRelationCollection.class.php
3.x/trunk/limb/active_record/tests/cases/lmbAROneToManyRelationsTest.class.php
3.x/trunk/limb/active_record/tests/cases/lmbARQueryTest.class.php
Log:
-- fixed a bug in lmbARRecordSetAttachDecorator that does not set a proper owner to created relation collections
-- lmbAROneToManyRelationsTest :: setOwner($owner) method added
Modified: 3.x/trunk/limb/active_record/src/lmbARRecordSetAttachDecorator.class.php
===================================================================
--- 3.x/trunk/limb/active_record/src/lmbARRecordSetAttachDecorator.class.php 2008-04-09 19:55:13 UTC (rev 6907)
+++ 3.x/trunk/limb/active_record/src/lmbARRecordSetAttachDecorator.class.php 2008-04-10 07:33:05 UTC (rev 6908)
@@ -151,6 +151,7 @@
case lmbActiveRecord :: HAS_MANY:
case lmbActiveRecord :: HAS_MANY_TO_MANY:
$collection = $this->base_object->createRelationCollection($relation_name);
+ $collection->setOwner($object);
if(isset($this->loaded_attaches[$relation_name][$object->get($this->prefix . $this->base_object->getPrimaryKeyName())]))
$collection->setDataset(new lmbCollection($this->loaded_attaches[$relation_name][$object->get($this->prefix . $this->base_object->getPrimaryKeyName())]));
$fields->set($this->prefix . $relation_name, $collection);
Modified: 3.x/trunk/limb/active_record/src/lmbARRelationCollection.class.php
===================================================================
--- 3.x/trunk/limb/active_record/src/lmbARRelationCollection.class.php 2008-04-09 19:55:13 UTC (rev 6907)
+++ 3.x/trunk/limb/active_record/src/lmbARRelationCollection.class.php 2008-04-10 07:33:05 UTC (rev 6908)
@@ -44,6 +44,12 @@
$this->reset();
}
+
+ function setOwner($new_owner)
+ {
+ $this->owner = $new_owner;
+ $this->reset();
+ }
function setCriteria($criteria)
{
Modified: 3.x/trunk/limb/active_record/tests/cases/lmbAROneToManyRelationsTest.class.php
===================================================================
--- 3.x/trunk/limb/active_record/tests/cases/lmbAROneToManyRelationsTest.class.php 2008-04-09 19:55:13 UTC (rev 6907)
+++ 3.x/trunk/limb/active_record/tests/cases/lmbAROneToManyRelationsTest.class.php 2008-04-10 07:33:05 UTC (rev 6908)
@@ -416,6 +416,26 @@
$this->assertIsA($arr[2]->getAltCourse(), 'CourseForTest');
$this->assertEqual($arr[2]->getAltCourse()->getTitle(), $alt_course1->getTitle());
}
+
+ function testFetchFirstWithRelationObjectsUsingAttach_AndThenSave()
+ {
+ $course1 = $this->creator->createCourse();
+ $course2 = $this->creator->createCourse();
+
+ $lecture1 = $this->creator->createLecture($course1);
+ $lecture2 = $this->creator->createLecture($course2);
+ $lecture3 = $this->creator->createLecture($course2);
+
+ $course2_loaded = lmbActiveRecord :: findFirst('CourseForTest', array('criteria' => 'course_for_test.id = '. $course2->getId(), 'attach' => 'lectures'));
+
+ $course2_loaded->setTitle('Some other title');
+
+ $course2_loaded->save();
+
+ $course2_loaded2 = lmbActiveRecord :: findFirst('CourseForTest', array('criteria' => 'course_for_test.id = '. $course2->getId(), 'attach' => 'lectures'));
+ $lectures = $course2_loaded2->getLectures();
+ $this->assertEqual(count($lectures), 2);
+ }
function _initCourse()
{
Modified: 3.x/trunk/limb/active_record/tests/cases/lmbARQueryTest.class.php
===================================================================
--- 3.x/trunk/limb/active_record/tests/cases/lmbARQueryTest.class.php 2008-04-09 19:55:13 UTC (rev 6907)
+++ 3.x/trunk/limb/active_record/tests/cases/lmbARQueryTest.class.php 2008-04-10 07:33:05 UTC (rev 6908)
@@ -701,7 +701,7 @@
$this->assertEqual($arr[0]->getCourses()->count(), 0);
$this->assertEqual($arr[1]->getCourses()->count(), 0);
- $this->assertEqual($this->conn->countQueries(), 0);
+ $this->assertEqual($this->conn->countQueries(), 2); // always do fetchi operations for not new owners of collections
}
function testFetch_JoinWithWrongRelationType()
More information about the limb-svn
mailing list