Skip to content

Call to a member function origin() on null when fetching Nav tree with origin_id field in Multisite #13315

Description

@danielsteuri

Bug Description

When fetching a navigation tree via the REST API in a multisite (language-configured) environment, requesting the origin_id field causes an exception if the navigation contains a "Nav Item" that does not link to an entry (e.g., a custom URL or label).

The API throws the error: Call to a member function origin() on null.

How to reproduce

  1. Configure a Statamic instance with Multisite enabled (configured for languages).
  2. Create a Navigation structure.
  3. Add a Nav Item that is not linked to an entry (e.g., a manual URL or a label).
  4. Perform a GET request to the REST API for the nav tree, including fields with origin_id.
  5. Example request: /api/navs/{nav_handle}/tree?fields=origin_id
  6. Observe the 500 Internal Server Error.

Logs

[2025-12-11 07:57:02] local.ERROR: Call to a member function origin() on null {"exception":"[object] (Error(code: 0): Call to a member function origin() on null at /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:23)[stacktrace]#0 /var/www/html/statamic/vendor/statamic/cms/src/Structures/Page.php(486): Statamic\\Structures\\Page->forwardCallTo()#1 /var/www/html/statamic/vendor/statamic/cms/src/Entries/AugmentedEntry.php(104): Statamic\\Structures\\Page->__call()#2 /var/www/html/statamic/vendor/statamic/cms/src/Data/AbstractAugmented.php(131): Statamic\\Entries\\AugmentedEntry->originId()#3 /var/www/html/statamic/vendor/statamic/cms/src/Fields/Value.php(58): Statamic\\Data\\AbstractAugmented->Statamic\\Data\\{closure}()#4 /var/www/html/statamic/vendor/statamic/cms/src/Data/AbstractAugmented.php(78): Statamic\\Fields\\Value->resolve()#5 /var/www/html/statamic/vendor/statamic/cms/src/Data/AbstractAugmented.php(52): Statamic\\Data\\AbstractAugmented->get()#6 /var/www/html/statamic/vendor/statamic/cms/src/Fields/Value.php(58): Statamic\\Data\\AbstractAugmented->Statamic\\Data\\{closure}()#7 /var/www/html/statamic/vendor/statamic/cms/src/Fields/Value.php(223): Statamic\\Fields\\Value->resolve()#8 /var/www/html/statamic/vendor/statamic/cms/src/Data/AugmentedCollection.php(65): Statamic\\Fields\\Value->isRelationship()#9 [internal function]: Statamic\\Data\\AugmentedCollection->Statamic\\Data\\{closure}()#10 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Collections/Arr.php(786): array_map()#11 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Collections/Collection.php(814): Illuminate\\Support\\Arr::map()#12 /var/www/html/statamic/vendor/statamic/cms/src/Data/AugmentedCollection.php(64): Illuminate\\Support\\Collection->map()#13 /var/www/html/statamic/vendor/statamic/cms/src/Structures/Page.php(497): Statamic\\Data\\AugmentedCollection->toArray()#14 [internal function]: Statamic\\Structures\\Page->jsonSerialize()#15 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/JsonResponse.php(85): json_encode()#16 /var/www/html/statamic/vendor/symfony/http-foundation/JsonResponse.php(49): Illuminate\\Http\\JsonResponse->setData()#17 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/JsonResponse.php(31): Symfony\\Component\\HttpFoundation\\JsonResponse->__construct()#18 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/ResponseFactory.php(105): Illuminate\\Http\\JsonResponse->__construct()#19 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/ResourceResponse.php(36): Illuminate\\Routing\\ResponseFactory->json()#20 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php(264): Illuminate\\Http\\Resources\\Json\\ResourceResponse->toResponse()#21 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(921): Illuminate\\Http\\Resources\\Json\\JsonResource->toResponse()#22 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(906): Illuminate\\Routing\\Router::toResponse()#23 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\\Routing\\Router->prepareResponse()#24 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()#25 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/HandleToken.php(13): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#26 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\HandleToken->handle()#27 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#28 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()#29 /var/www/html/statamic/vendor/statamic/cms/src/API/Middleware/Cache.php(29): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#30 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\API\\Middleware\\Cache->handle()#31 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/RequireStatamicPro.php(17): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#32 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\RequireStatamicPro->handle()#33 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#34 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\\Pipeline\\Pipeline->then()#35 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\\Routing\\Router->runRouteWithinStack()#36 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(764): Illuminate\\Routing\\Router->runRoute()#37 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(753): Illuminate\\Routing\\Router->dispatchToRoute()#38 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\\Routing\\Router->dispatch()#39 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()#40 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/StopImpersonating.php(12): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#41 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\StopImpersonating->handle()#42 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/DisableFloc.php(17): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#43 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\DisableFloc->handle()#44 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/CheckMultisite.php(15): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#45 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\CheckMultisite->handle()#46 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/CheckComposerJsonScripts.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#47 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\CheckComposerJsonScripts->handle()#48 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/PoweredByHeader.php(18): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#49 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\PoweredByHeader->handle()#50 /var/www/html/statamic/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(59): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#51 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle()#52 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#53 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()#54 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()#55 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#56 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()#57 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()#58 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#59 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePostSize->handle()#60 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(109): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#61 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()#62 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(61): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#63 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\HandleCors->handle()#64 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#65 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\TrustProxies->handle()#66 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#67 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle()#68 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#69 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePathEncoding->handle()#70 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#71 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\\Pipeline\\Pipeline->then()#72 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()#73 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1220): Illuminate\\Foundation\\Http\\Kernel->handle()#74 /var/www/html/statamic/public/index.php(20): Illuminate\\Foundation\\Application->handleRequest()#75 {main}"} 

Environment

# EnvironmentApplication Name: StatamicLaravel Version: 12.40.2PHP Version: 8.3.27Composer Version: 2.9.1Environment: localDebug Mode: ENABLEDURL: localhost:8000Maintenance Mode: OFFTimezone: UTCLocale: en# CacheConfig: NOT CACHEDEvents: NOT CACHEDRoutes: NOT CACHEDViews: NOT CACHED# DriversBroadcasting: logCache: fileDatabase: mariadbLogs: stack / singleMail: smtpQueue: syncSession: file# Storagepublic/storage: NOT LINKED# StatamicAddons: 1Sites: 4 (Deutsch, Français, Italiano, English)Stache Watcher: Enabled (auto)Static Caching: DisabledVersion: 5.69.0 PRO# Statamic Addonsstatamic/eloquent-driver: 4.35.1# Statamic Eloquent DriverAsset Containers: eloquentAssets: eloquentBlueprints: fileCollection Trees: eloquentCollections: eloquentEntries: eloquentFieldsets: fileForm Submissions: eloquentForms: eloquentGlobal Sets: eloquentGlobal Variables: eloquentNavigation Trees: eloquentNavigations: eloquentRevisions: fileSites: fileTaxonomies: fileTerms: fileTokens: eloquent

Installation

Fresh statamic/statamic site via CLI

Additional details

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions