diff --git a/src/AttachMany.php b/src/AttachMany.php index 0a13101..7acff90 100644 --- a/src/AttachMany.php +++ b/src/AttachMany.php @@ -128,11 +128,11 @@ public function authorize(Request $request) && parent::authorize($request); } - public function formatAssociatableResource(NovaRequest $request, $resource) + public function formatAssociatableResource(NovaRequest $request, $resource, $parentModel, $relationship) { $item = [ 'display' => $this->formatDisplayValue($resource), - 'value' => $resource->getKey(), + 'value' => $resource->{$parentModel->$relationship()->getRelatedKeyName()}, ]; if($this->showSubtitle) { diff --git a/src/Http/Controllers/AttachController.php b/src/Http/Controllers/AttachController.php index d505e52..d573730 100644 --- a/src/Http/Controllers/AttachController.php +++ b/src/Http/Controllers/AttachController.php @@ -23,7 +23,7 @@ public function edit(NovaRequest $request, $parent, $parentId, $relationship) abort(500, class_basename($foundResource->model()) . " is missing relationship: $relationship"); } - $keyName = $foundResource->model()->{$relationship}()->getModel()->getKeyName(); + $keyName = $foundResource->model()->{$relationship}()->getRelatedKeyName(); return [ 'selected' => $foundResource->model()->{$relationship}->pluck($keyName), @@ -47,8 +47,8 @@ public function getAvailableResources($request, $relationship) ->mapInto($field->resourceClass) ->filter(function ($resource) use ($request, $field) { return $request->newResource()->authorizedToAttach($request, $resource->resource); - })->map(function ($resource) use ($request, $field) { - return $field->formatAssociatableResource($request, $resource); + })->map(function ($resource) use ($request, $field, $resourceClass, $relationship) { + return $field->formatAssociatableResource($request, $resource, $resourceClass->newModel(), $relationship); })->values(); }