diff --git a/src/Laravel/Eloquent/State/LinksHandler.php b/src/Laravel/Eloquent/State/LinksHandler.php index 771ee4d73f..509c514ab7 100644 --- a/src/Laravel/Eloquent/State/LinksHandler.php +++ b/src/Laravel/Eloquent/State/LinksHandler.php @@ -28,6 +28,7 @@ use Illuminate\Database\Eloquent\Relations\HasOneOrMany; use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\Relations\Relation; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; /** * @implements LinksHandlerInterface @@ -109,8 +110,22 @@ private function buildQuery(Builder $builder, Link $link, mixed $identifier): Bu if ($from = $link->getFromProperty()) { /** @var Model $relatedInstance */ $relatedInstance = $this->application->make($link->getFromClass()); - $relatedInstance->setAttribute($relatedInstance->getKeyName(), $identifier); - $relatedInstance->exists = true; + + $identifierField = $link->getIdentifiers()[0]; + + if ($identifierField !== $relatedInstance->getKeyName()) { + $relatedInstance = $relatedInstance + ->newQuery() + ->where($identifierField, $identifier) + ->first(); + } else { + $relatedInstance->setAttribute($identifierField, $identifier); + $relatedInstance->exists = true; + } + + if (!$relatedInstance) { + throw new NotFoundHttpException('Not Found'); + } /** @var Relation $relation */ $relation = $relatedInstance->{$from}();