FIX/load fields if lazy ones exists

This commit is contained in:
Andrew Aitken-Fincham 2017-02-07 11:57:49 +00:00
parent 4daa1b4a89
commit b8a0944bda
2 changed files with 20 additions and 0 deletions

View File

@ -2721,6 +2721,11 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
return null;
}
if (!isset($this->record[$fieldName]) && isset($this->record[$fieldName . '_Lazy'])) {
$tableClass = $this->record[$fieldName . '_Lazy'];
$this->loadLazyFields($tableClass);
}
$value = isset($this->record[$fieldName])
? $this->record[$fieldName]
: null;

View File

@ -150,6 +150,21 @@ class DataObjectLazyLoadingTest extends SapphireTest
);
}
public function testDBObjectLazyLoadedFields()
{
$subteam1 = $this->objFromFixture(SubTeam::class, 'subteam1');
$teams = DataObject::get(Team::class); // query parent class
$subteam1Lazy = $teams->find('ID', $subteam1->ID);
$subteam1DO = $subteam1->dbObject('SubclassDatabaseField');
$subteam1LazyDO = $subteam1Lazy->dbObject('SubclassDatabaseField');
$this->assertEquals(
$subteam1DO->getValue(),
$subteam1LazyDO->getValue()
);
}
public function testLazyLoadedFieldsSetField()
{
$subteam1 = $this->objFromFixture(SubTeam::class, 'subteam1');