From b89271261640d72059337c1898e3b0eeb02d1dcc Mon Sep 17 00:00:00 2001 From: Gruz Date: Tue, 25 Apr 2017 13:58:26 +0300 Subject: [PATCH 1/3] Allow non-id primary key --- src/Utility.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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}; } } From 3840678ca1c20ef29a556efea4e403a0b25fb6ec Mon Sep 17 00:00:00 2001 From: Gruz Date: Tue, 25 Apr 2017 13:59:41 +0300 Subject: [PATCH 2/3] Allow non-id primary key --- src/ModeResolver/IdsModeResolver.php | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) 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 From bc2849660139d42d846e203424e6ac39bba59632 Mon Sep 17 00:00:00 2001 From: Gruz Date: Tue, 25 Apr 2017 14:00:16 +0300 Subject: [PATCH 3/3] Allow non-id primary key --- src/ModeResolver/SideloadModeResolver.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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; }