diff --git a/src/Data/DataCollection.php b/src/Data/DataCollection.php index 092a1c2977..f6ce3d8131 100644 --- a/src/Data/DataCollection.php +++ b/src/Data/DataCollection.php @@ -96,17 +96,19 @@ protected function getSortableValue($sort, $item) return $this->normalizeSortableValue($item[$sort] ?? null); } - $method = Str::camel($sort); - if ($item instanceof Result && ! $item instanceof PlainResult) { $item = $item->getSearchable() ?? $item; } - $value = (method_exists($item, $method)) - ? call_user_func([$item, $method]) - : $item->get($sort); + if (method_exists($item, $method = Str::camel($sort))) { + return $this->normalizeSortableValue(call_user_func([$item, $method])); + } + + if (method_exists($item, 'value')) { + return $this->normalizeSortableValue($item->value($sort)); + } - return $this->normalizeSortableValue($value); + return $this->normalizeSortableValue($item->get($sort)); } /**