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

# Environment
Application Name: Statamic
Laravel Version: 12.40.2
PHP Version: 8.3.27
Composer Version: 2.9.1
Environment: local
Debug Mode: ENABLED
URL: localhost:8000
Maintenance Mode: OFF
Timezone: UTC
Locale: en

# Cache
Config: NOT CACHED
Events: NOT CACHED
Routes: NOT CACHED
Views: NOT CACHED

# Drivers
Broadcasting: log
Cache: file
Database: mariadb
Logs: stack / single
Mail: smtp
Queue: sync
Session: file

# Storage
public/storage: NOT LINKED

# Statamic
Addons: 1
Sites: 4 (Deutsch, Français, Italiano, English)
Stache Watcher: Enabled (auto)
Static Caching: Disabled
Version: 5.69.0 PRO

# Statamic Addons
statamic/eloquent-driver: 4.35.1

# Statamic Eloquent Driver
Asset Containers: eloquent
Assets: eloquent
Blueprints: file
Collection Trees: eloquent
Collections: eloquent
Entries: eloquent
Fieldsets: file
Form Submissions: eloquent
Forms: eloquent
Global Sets: eloquent
Global Variables: eloquent
Navigation Trees: eloquent
Navigations: eloquent
Revisions: file
Sites: file
Taxonomies: file
Terms: file
Tokens: eloquent

Installation

Fresh statamic/statamic site via CLI

Additional details

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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