diff --git a/model/DataList.php b/model/DataList.php index 931419c25..721cedd50 100644 --- a/model/DataList.php +++ b/model/DataList.php @@ -668,6 +668,10 @@ class DataList extends ViewableData implements SS_List, SS_Filterable, SS_Sortab return singleton($this->dataClass)->$relationName()->forForeignID($ids); } + function dbObject($fieldName) { + return singleton($this->dataClass)->dbObject($fieldName); + } + /** * Add a number of items to the component set. * diff --git a/model/DataObject.php b/model/DataObject.php index 4a5add52a..024a01e15 100644 --- a/model/DataObject.php +++ b/model/DataObject.php @@ -2404,7 +2404,12 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity // Traverse dot syntax $component = $this; foreach($parts as $relation) { - $component = $component->$relation(); + if($component instanceof SS_List) { + if(method_exists($component,$relation)) $component = $component->$relation(); + else $component = $component->relation($relation); + } else { + $component = $component->$relation(); + } } $object = $component->dbObject($fieldName); @@ -2436,7 +2441,12 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity // Traverse dot syntax $component = $this; foreach($parts as $relation) { - $component = $component->$relation(); + if($component instanceof SS_List) { + if(method_exists($component,$relation)) $component = $component->$relation(); + else $component = $component->relation($relation); + } else { + $component = $component->$relation(); + } } return $component->$fieldName;