filament icon indicating copy to clipboard operation
filament copied to clipboard

Action on Table throws "foreach() argument must be of type array|object, null given" when legacy_model_binding is set

Open SudoGetBeer opened this issue 3 months ago • 1 comments

Package

filament/filament

Package Version

v4.0.10

Laravel Version

v12.28.1

Livewire Version

v3.6.4

PHP Version

8.4.12

Problem description

I have a table and a header action where i have a Select which provides a value i want to save. It seems that the legacy_model_binding = true have something todo with that, but I could be wrong.

Expected behavior

The Action saves an no Exception is thrown

Steps to reproduce

Open the project click on the Action "Bugs" and Submit the Form (empty or something selected).

Reproduction repository (issue will be closed if this is not valid)

https://github.com/SudoGetBeer/fliament-legacy-null-bug

Relevant log output

# ErrorException - Internal Server Error
foreach() argument must be of type array|object, null given

PHP 8.4.12
Laravel 12.28.1
filamentselectbug.test

## Stack Trace

0 - vendor/filament/forms/src/Components/Select.php:606
1 - vendor/filament/forms/src/Components/Select.php:1449
2 - vendor/filament/forms/src/Components/Concerns/CanBeValidated.php:801
3 - vendor/filament/forms/src/Components/Concerns/CanBeValidated.php:907
4 - vendor/filament/schemas/src/Concerns/CanBeValidated.php:85
5 - vendor/filament/schemas/src/Concerns/InteractsWithSchemas.php:389
6 - vendor/livewire/livewire/src/Features/SupportLegacyModels/SupportLegacyModels.php:136
7 - vendor/livewire/livewire/src/Features/SupportLegacyModels/SupportLegacyModels.php:84
8 - vendor/livewire/livewire/src/Features/SupportLegacyModels/SupportLegacyModels.php:89
9 - vendor/livewire/livewire/src/Features/SupportLegacyModels/EloquentCollectionSynth.php:109
10 - vendor/livewire/livewire/src/Features/SupportLegacyModels/EloquentCollectionSynth.php:39
11 - vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php:178
12 - vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php:166
13 - vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php:145
14 - vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php:112
15 - vendor/livewire/livewire/src/LivewireManager.php:102
16 - vendor/livewire/volt/src/LivewireManager.php:35
17 - vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:94
18 - vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:46
19 - vendor/laravel/framework/src/Illuminate/Routing/Route.php:265
20 - vendor/laravel/framework/src/Illuminate/Routing/Route.php:211
21 - vendor/laravel/framework/src/Illuminate/Routing/Router.php:822
22 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180
23 - vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:50
24 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
25 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:87
26 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
27 - vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:48
28 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
29 - vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:120
30 - vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:63
31 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
32 - vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:36
33 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
34 - vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:74
35 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
36 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:137
37 - vendor/laravel/framework/src/Illuminate/Routing/Router.php:821
38 - vendor/laravel/framework/src/Illuminate/Routing/Router.php:800
39 - vendor/laravel/framework/src/Illuminate/Routing/Router.php:764
40 - vendor/laravel/framework/src/Illuminate/Routing/Router.php:753
41 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:200
42 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180
43 - vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php:19
44 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
45 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php:27
46 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
47 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php:47
48 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
49 - vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php:27
50 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
51 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php:109
52 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
53 - vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php:48
54 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
55 - vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php:58
56 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
57 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php:22
58 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
59 - vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php:26
60 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
61 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:137
62 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:175
63 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:144
64 - vendor/laravel/framework/src/Illuminate/Foundation/Application.php:1220
65 - public/index.php:20
66 - /Applications/Herd.app/Contents/Resources/valet/server.php:167

## Request

POST /livewire/update

## Headers

* **priority**: u=4
* **dnt**: 1
* **cookie**: XSRF-TOKEN=eyJpdiI6IllHVmZBUDhya3JzdWZtTTdpb2dGbHc9PSIsInZhbHVlIjoiTFB4d0RqZS8zMkVkMStnMW5tZEE1VTZ3MkFLRzBlalhVdEU4YkxBS3VjcmFRa3hmSDE3cGdVdUd6ZnFYRTZ6RXVjWjNWeXBVYm5LZjZSelFiRm4xeTh6ZHBuY3dJNFdRaG40M1hCL0tWalU3cnRHYStiY2IrOFdmNVpkWUNHb0QiLCJtYWMiOiIzNjM3MTI4ZGY2NDZiZTExNWIwMzRlM2QxMGIzYTk5YTY2YWYzYmFmNzFmYzg4MjM2OTY5OTY4MThlYjQwMjk1IiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6IkdhYjk0MldvWHZodFF1T1M1aFhGblE9PSIsInZhbHVlIjoiVUQrWkdkdWQ3NEdKa1ZwWnFBeHBaK2JvWXErNUpyNTBTM3NlTTRySURjbHhFcUwxZnFQZ0JObnJrcS94Q3hOc0FvcEZod0NEYzUzTEl2Z1V4cHBKY0JKbHdTZ3MwcS9WMmM0UXVIMHA2ZVZUM01kck5EZHAyWUhhZkhIVmVyZG0iLCJtYWMiOiJhMTIyOWFhNmVhN2E3YmRlYjVhZjkyYWY1MTRhNGRhODgyZDBmYjRiOTkxZmNlZjUwMjdjOWQ2YmNkMTVkNGU3IiwidGFnIjoiIn0%3D
* **connection**: keep-alive
* **sec-gpc**: 1
* **origin**: http://filamentselectbug.test
* **content-length**: 1770
* **x-livewire**: 
* **content-type**: application/json
* **referer**: http://filamentselectbug.test/
* **accept-encoding**: gzip, deflate
* **accept-language**: de,en-US;q=0.7,en;q=0.3
* **accept**: */*
* **user-agent**: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:142.0) Gecko/20100101 Firefox/142.0
* **host**: filamentselectbug.test

## Route Context

controller: Livewire\Mechanisms\HandleRequests\HandleRequests@handleUpdate
route name: livewire.update
middleware: web

## Route Parameters

No route parameter data available.

## Database Queries

* sqlite - select * from "sessions" where "id" = '7voH7J7U1LLugZFnFIHh4PBzo3fx4Lv9aMZx32KV' limit 1 (0.74 ms)
* sqlite - select * from "users" where "users"."id" in (1) (0.04 ms)
* sqlite - select count(*) as aggregate from "users" (0.07 ms)
* sqlite - select * from "users" order by "users"."id" asc limit 10 offset 0 (0.03 ms)

SudoGetBeer avatar Sep 12 '25 07:09 SudoGetBeer

Marked as low priority since legacy_model_binding is rarely used nowadays

danharrin avatar Sep 12 '25 09:09 danharrin