filament
filament copied to clipboard
Action on Table throws "foreach() argument must be of type array|object, null given" when legacy_model_binding is set
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)
Marked as low priority since legacy_model_binding is rarely used nowadays