diff --git a/src/ModeResolver/IdsModeResolver.php b/src/ModeResolver/IdsModeResolver.php index 74a79a8..5c9a6e3 100644 --- a/src/ModeResolver/IdsModeResolver.php +++ b/src/ModeResolver/IdsModeResolver.php @@ -30,15 +30,33 @@ public function resolve($property, &$object, &$root, $fullPropertyPath) // model, because the first item returned was a property // We therefore just return the single ID if (Utility::isPrimitive($firstElement)) { - return (int) Utility::getProperty($object, 'id'); + $return = Utility::getProperty($object, $entry->getKeyName()); + + if ($entry->incrementing){ + return (int) $return; + } + + return $return; } return array_map(function ($entry) { - return (int) Utility::getProperty($entry, 'id'); + $return = Utility::getProperty($entry, $entry->getKeyName()); + + if ($entry->incrementing){ + return (int) $return; + } + + return $return; }, $object); } elseif ($object instanceof Collection) { return $object->map(function ($entry) { - return (int) Utility::getProperty($entry, 'id'); + $return = Utility::getProperty($entry, $entry->getKeyName()); + + if ($entry->incrementing){ + return (int) $return; + } + + return $return; }); // The relation is not a collection, but rather // a singular relation diff --git a/src/ModeResolver/SideloadModeResolver.php b/src/ModeResolver/SideloadModeResolver.php index c898e7a..36ae046 100644 --- a/src/ModeResolver/SideloadModeResolver.php +++ b/src/ModeResolver/SideloadModeResolver.php @@ -102,13 +102,13 @@ private function mergeRootCollection(&$collection, $object) */ private function addResourceToRootCollectionIfNonExistant(&$collection, $resource) { - $identifier = Utility::getProperty($resource, 'id'); + $identifier = Utility::getProperty($resource, $resource->getKeyName()); $exists = false; $copy = $collection instanceof Collection ? $collection->toArray() : $collection; foreach ($copy as $rootResource) { - if ((int) Utility::getProperty($rootResource, 'id') === (int) $identifier) { + if (Utility::getProperty($rootResource, $resource->getKeyName()) == $identifier) { $exists = true; break; } diff --git a/src/Utility.php b/src/Utility.php index 31cb312..d29b5e6 100644 --- a/src/Utility.php +++ b/src/Utility.php @@ -18,7 +18,8 @@ public static function getProperty($objectOrArray, $property) if (is_array($objectOrArray)) { return $objectOrArray[$property]; } else { - return $objectOrArray->{$property}; + return $objectOrArray->getAttributes()[$property]; + // return $objectOrArray->{$property}; } }