diff --git a/src/Models/BaseElement.php b/src/Models/BaseElement.php index 49b816ee..a3f89c22 100644 --- a/src/Models/BaseElement.php +++ b/src/Models/BaseElement.php @@ -894,16 +894,19 @@ public function getAreaRelationName() $result = 'ElementalArea'; if ($page) { - $has_one = $page->config()->get('has_one'); - $area = $this->Parent(); - - foreach ($has_one as $relationName => $relationClass) { - if ($page instanceof BaseElement && $relationName === 'Parent') { - continue; - } - if ($relationClass === $area->ClassName && $page->{$relationName}()->ID === $area->ID) { - $result = $relationName; - break; + $class = DataObject::getSchema()->hasOneComponent($this, 'Parent'); + $area = $this->ParentID ? DataObject::get_by_id($class, $this->ParentID) : null; + + if ($area) { + $has_one = $page->config()->get('has_one'); + foreach ($has_one as $relationName => $relationClass) { + if ($page instanceof BaseElement && $relationName === 'Parent') { + continue; + } + if ($relationClass === $area->ClassName && $page->{$relationName}()->ID === $area->ID) { + $result = $relationName; + break; + } } } }