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) {
|
||||
$joinClass = $this->manipulator->getJoinClass();
|
||||
$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);
|
||||
}
|
||||
|
||||
|
@ -514,4 +514,19 @@ class ManyManyThroughListTest extends SapphireTest
|
||||
$relation->removeAll();
|
||||
$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