mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
FIX: Stop ManyManyThroughList join records incorrectly showing as changed (fixes #10821)
This commit is contained in:
parent
4f6ab330f5
commit
1fd495449b
@ -87,7 +87,8 @@ class ManyManyThroughList extends RelationList
|
|||||||
if ($joinRow) {
|
if ($joinRow) {
|
||||||
$joinClass = $this->manipulator->getJoinClass();
|
$joinClass = $this->manipulator->getJoinClass();
|
||||||
$joinQueryParams = $this->manipulator->extractInheritableQueryParameters($this->dataQuery);
|
$joinQueryParams = $this->manipulator->extractInheritableQueryParameters($this->dataQuery);
|
||||||
$joinRecord = Injector::inst()->create($joinClass, $joinRow, false, $joinQueryParams);
|
$creationType = empty($joinRow['ID']) ? DataObject::CREATE_OBJECT : DataObject::CREATE_HYDRATED;
|
||||||
|
$joinRecord = Injector::inst()->create($joinClass, $joinRow, $creationType, $joinQueryParams);
|
||||||
$record->setJoin($joinRecord, $joinAlias);
|
$record->setJoin($joinRecord, $joinAlias);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -514,4 +514,19 @@ class ManyManyThroughListTest extends SapphireTest
|
|||||||
$relation->removeAll();
|
$relation->removeAll();
|
||||||
$this->assertEquals(sort($remove), sort($removedIds));
|
$this->assertEquals(sort($remove), sort($removedIds));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testChangedFields()
|
||||||
|
{
|
||||||
|
/** @var ManyManyThroughListTest\TestObject $parent */
|
||||||
|
$parent = $this->objFromFixture(ManyManyThroughListTest\TestObject::class, 'parent1');
|
||||||
|
$item1 = $parent->Items()->first();
|
||||||
|
|
||||||
|
// Nothing has changed yet
|
||||||
|
$this->assertEmpty($item1->getChangedFields());
|
||||||
|
$this->assertFalse($item1->isChanged('Title'));
|
||||||
|
|
||||||
|
// Change a field, ensure change is flagged
|
||||||
|
$item1->Title = 'a test title';
|
||||||
|
$this->assertTrue($item1->isChanged('Title'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user