The goal is to make abstract code based on the package notorm to build a new orm system
Found 80 issues
First time here? ๐
Welcome to Find a PR.
Find a PR is an open-source site that is built to help developers find projects so that they can submit their very first pull request.
If you're a contributor looking to find a project to contribute to, feel free to browse through the list below.
If you're a maintainer looking to list your project on Find a PR, you can read how to do this in the documentation.
Laravel Version
12.40.2
PHP Version
8.3.25
Database Driver & Version
Microsoft SQL Server 2025 for MacOS Tahoe (26.1) (using Orbstack's Rosetta and Docker platform settings to emulate Intel)
Description
There is a problem with Laravel's Schema Builder when creating JSON columns on SQL Server 2025. Although SQL Server 2025 introduces native JSON datatype support, the ->json() method still creates nvarchar(max) columns instead of using the new native JSON datatype. This results in underutilization of important database features and may negatively impact performance and validation.
Moreover, there is no mechanism to detect the SQL Server version and conditionally use the native JSON datatype only when supported. For older SQL Server versions, the current fallback to nvarchar(max) should of course remain for backwards compatibility.
Steps To Reproduce
- Create a Laravel migration script defining a JSON column:
Schema::create('example_table', function (Blueprint $table) {
$table->json('data');
});
- Run this migration on a SQL Server 2025 database.
- Check the datatype of the created column in the database.
- You'll see it's a
nvarchardatatype instead ofjson
martijnvt1981
28th Nov 2025 @ 15:05
Discussed in https://github.com/spatie/schema-org/discussions/202
Originally posted by indyjonesnl January 10, 2024
$lodgingBusiness = Schema::lodgingBusiness()
->openingHours(
Schema::openingHoursSpecification()
->dayOfWeek([Schema::dayOfWeek()::Monday])
->opens(new DateTime('09:00:00'))
->closes(new DateTime('17:00:00'))
)
->checkinTime(new DateTime('14:00:00'))
->checkoutTime(new DateTime('11:00:00'))
This results in the current date + time being included in the output "opens":"2024-01-10T09:00:00+00:00","closes":"2024-01-10T17:00:00+00:00" and ..."checkinTime":"2024-01-10T14:00:00+00:00","checkoutTime":"2024-01-10T11:00:00+00:00"...
While the Schema should contain only the time, formatted as 14:30:00+08:00.
Can someone point me in the right direction?
Gummibeer
11th Jan 2024 @ 13:12
If a pack lists things in its "replace" section, unpacking this pack should copy these rules into the "replace" section of the root composer.json.
I think that implementing this requires patching the Unpacker class only.
Anyone up to give it a try?
nicolas-grekas
8th Jul 2020 @ 18:35
Package
filament/tables
Package Version
v4.0.0-beta19
Laravel Version
v12.21.0
Livewire Version
v3.6.4
PHP Version
PHP 8.4.8
Problem description
When a model contains a HasManyThrough relationship and it is used when overriding a resource getEloquentQuery(), items are duplicated based on the Through table id.
For example if i want to filter records by user on the list page using a HasManyThrough relationship.
Users -> Throughs -> Items
The two main changes to the default app are the HasManyThrough relation in App\Models\User.php
public function items(): HasManyThrough
{
return $this->hasManyThrough(Item::class, Through::class);
}
And the override of getEloquentQuery in the resource
public static function getEloquentQuery(): Builder
{
return Auth::user()->items()->getQuery();
}
Expected behavior
Items are not duplicated. It is a regression from v3, where this was working properly.
V3:
V4:
Steps to reproduce
I have provided a repository with a relevant README to reproduce.
Reproduction repository (issue will be closed if this is not valid)
https://github.com/Iilun/filament-v4-has-many-through
Relevant log output
When running tinker queries, we can find the root cause. When using HasManyThrough->getQuery()->get(), the `id` field from the model is indeed the same as `trough_id`.
What's interesting is that this is NOT the case when querying the relation directly (without getQuery)
> User::first()->items()->getQuery()->limit(2)->get()
= Illuminate\Database\Eloquent\Collection {#7082
all: [
App\Models\Item {#7072
id: 1,
through_id: 1,
name: "Harley Davis",
created_at: "2025-07-26 20:40:21",
updated_at: "2025-07-26 20:40:21",
user_id: 1,
},
App\Models\Item {#7083
id: 1,
through_id: 1,
name: "Connie Carter",
created_at: "2025-07-26 20:40:21",
updated_at: "2025-07-26 20:40:21",
user_id: 1,
},
],
}
> User::first()->items()->limit(2)->get()
= Illuminate\Database\Eloquent\Collection {#7056
all: [
App\Models\Item {#7057
id: 1,
through_id: 1,
name: "Harley Davis",
created_at: "2025-07-26 20:40:21",
updated_at: "2025-07-26 20:40:21",
laravel_through_key: 1,
},
App\Models\Item {#7103
id: 2,
through_id: 1,
name: "Connie Carter",
created_at: "2025-07-26 20:40:21",
updated_at: "2025-07-26 20:40:21",
laravel_through_key: 1,
},
],
}
Update:
It turns out this also induces a bug in v3, where the generated record link is for the through_id instead of item_id, even though the display is correct (the first three items all open page for id = 1)
Iilun
26th Jul 2025 @ 21:20
When you install a UX package, if you have AssetMapper installed, we importmap:require the packages you need. We should also importmap:remove those when the package is uninstalled.
https://github.com/symfony/recipes/issues/1089#issuecomment-1885459144
weaverryan
10th Jan 2024 @ 19:05
Hello,
I noticed that there is an incompatibility with the mbstring polyfill and PHP 8.1 / Alpine Linux, which breaks a lot of my projects as soon as the php81-mbstring is not installed, but php81-iconv is installed:
Example:
Warning: iconv(): Wrong encoding, conversion from "ASCII" to "UTF-8//IGNORE" is not allowed in phar:///var/www/localhost/htdocs/phpstan.phar/vendor/symfony/polyfill-mbstring/Mbstring.php on line 736
It looks like //IGNORE is not accepted since echo iconv('UTF-8', 'UTF-8', 'test'); works, while echo iconv('UTF-8', 'UTF-8//IGNORE', 'test'); doesn't
danielmarschall
7th Jan 2022 @ 00:12
Immediately after installing php-flasher/flasher-laravel, the application breaks with the following error:
foreach() argument must be of type array|object, bool given
Simply installing the package causes this fatal error.
Steps to Reproduce:
Create a fresh Laravel app.
Run:
composer require php-flasher/flasher-laravel
Load any page in the app โ no usage of flasher() or flasher_render() yet.
Laravel crashes with a foreach() error.
dlopez525
11th Apr 2025 @ 18:20
Currently, for plural rules, the MessageFormatter polyfills uses the English rules for all locales (it ignores the locale).
To be consistent with what we do in symfony/intl (used by symfony/polyfill-intl-icu to implement NumberFormatter and DateFormatter), we should rather fail explicitly here (using the English rules for a different locale would not give the right result anyway)
stof
23rd Oct 2018 @ 15:34
Hi,
With the polyfill, var_dump(mb_strlen(chr(254))) return 0.
With the php8.0-mbstring extension, var_dump(mb_strlen(chr(254))) return 1;
versions : * v1.26.0
Thanks, Alex
alexchuin
18th Oct 2022 @ 12:51
Octane Version
2.11.0
Laravel Version
12.20.0
PHP Version
8.3.23
What server type are you using?
FrankenPHP
Server Version
1.8.0
Database Driver & Version
No response
Description
I have an octane app running inside a docker container and use a bind mount for the application code. When editing files, fs events are not sent across the bind mount to the container, so the watcher does not detect them. I have the same issue reported in #487. There is also an open issue on the frankenphp repository https://github.com/php/frankenphp/issues/1616.
A potential solution would be to add an option to octane:frankenphp, like --chokidar to use chokidar instead of frankenphp's watcher.
Steps To Reproduce
Same as #487, but using frankenphp.
rty765
14th Jul 2025 @ 19:46
Package
filament/filament
Package Version
v3.3.14
Laravel Version
v12.13.0
Livewire Version
No response
PHP Version
8.2
Problem description
I have Brand Resource with Categories Relation Manager.
In Categories Relation Manager, I have repeater for Menu Items that has File Upload for image.
After submitting the form: It doesn't let me click on the 'x' button to remove the image. Also when changing the image, it doesn't work. Need to upload the image twice.
Expected behavior
On clicking 'x' it should remove the image as it does normally. Uploading image on edit should work as intended.
Steps to reproduce
Use the repo I created. In that first create a brand, then create category with menu items. Now upload image for 1 menu item and save. Now open the same category with menu item and try removing the image. Doesn't work. Now try to change the image of that menu item, there will be an issue. Need to upload the same image twice.
Reproduction repository (issue will be closed if this is not valid)
https://github.com/faizanakbar10/filament-fileupload-repeater-issue
Relevant log output
faizanakbar10
12th May 2025 @ 12:04
This polyfill should be implemented in 2 places:
- in
symfony/polyfill-intl-grapheme - in
symfony/polyfill-php85, only when the intl extension is loaded (to cover the case of using intl on older PHP versions that won't have this function)
stof
19th Nov 2025 @ 16:44
Package
filament/filament
Package Version
3.3.28
Laravel Version
12.19.3
Livewire Version
3.6.3
PHP Version
8.4.8
Problem description
For a Filament Panel Page that includes a child Livewire component, a Filament Notification fired by that child component is rendered twice by Filament's notifications.blade.php if a Livewire event is fired at the same time. If an event is not fired, the notification renders only once.
Expected behavior
The Filament Notification blade should be rendered only once for any call to the Notification object.
Steps to reproduce
Given the provided repo.
composer install
php artisan migrate
php artisan make:filament-user
In vendor/filament/notifications/resources/views/notifications.blade.php log out the $notifications variable:
@php
use Filament\Support\Enums\Alignment;
use Filament\Support\Enums\VerticalAlignment;
\Log::info($notifications);
@endphp
Navigate to /admin/foobar .
Click "With Event" button. Refresh.
Click "Without Event" button. Refresh.
Checking laravel.log, the "With Event" log is proceeded by two renders of a notification with the same ID. The "Notification without Event" is proceeded by just one.
(See log output below)
Reproduction repository (issue will be closed if this is not valid)
https://github.com/jasonlund/filament-notification
Relevant log output
[2025-06-23 16:36:13] local.INFO: []
[2025-06-23 16:36:42] local.INFO: []
[2025-06-23 16:36:43] local.INFO: Notification with Event
[2025-06-23 16:36:43] local.INFO: {"9f3994ea-cbdd-429b-9202-1c2aa6582117":{"id":"9f3994ea-cbdd-429b-9202-1c2aa6582117","actions":[],"body":null,"color":null,"duration":6000,"icon":"heroicon-o-check-circle","iconColor":"success","status":"success","title":"With Event","view":"filament-notifications::notification","viewData":[]}}
[2025-06-23 16:36:43] local.INFO: {"9f3994ea-cbdd-429b-9202-1c2aa6582117":{"id":"9f3994ea-cbdd-429b-9202-1c2aa6582117","actions":[],"body":null,"color":null,"duration":6000,"icon":"heroicon-o-check-circle","iconColor":"success","status":"success","title":"With Event","view":"filament-notifications::notification","viewData":[]}}
[2025-06-23 16:36:44] local.INFO: []
[2025-06-23 16:36:46] local.INFO: Notification without Event
[2025-06-23 16:36:46] local.INFO: {"9f3994ee-65f6-434d-95b4-e1c266b15e85":{"id":"9f3994ee-65f6-434d-95b4-e1c266b15e85","actions":[],"body":null,"color":null,"duration":6000,"icon":"heroicon-o-check-circle","iconColor":"success","status":"success","title":"Without Event","view":"filament-notifications::notification","viewData":[]}}
[2025-06-23 16:36:52] local.INFO: []
jasonlund
23rd Jun 2025 @ 16:40
I tried the example config from the docs to a Laravel/Inertia/Vue app, and it don't work.
If use the code (HandleInertiaRequests.php): 'messages' => flash()->render([], 'array'),
Error: Flasher\Prime\Flasher::render(): Argument #1 ($presenter) must be of type string, array given, called in D:\Laragon6\www\mobi-care\app\Http\Middleware\HandleInertiaRequests.php on line 36
And changing it to: 'messages' => flash()->render('array'), it loads the page, but, I only see the notifications if i press F5, with its not the desired state.
brunonetadmin
18th Mar 2025 @ 17:16
There's no Expectation to expect a class to use HasRequestPagination rather than HasPagination.
JonPurvis
28th May 2025 @ 18:02
Octane Version
2.6.1
Laravel Version
11.41.3
PHP Version
8.3
What server type are you using?
Roadrunner
Server Version
2024.3.2
Database Driver & Version
No response
Description
ok this is in the borderline to be a bug but i write it anyway.
i am deploying using deployer , i suppose will happen for any Zero Downtime Deployments.
/releases/99/
/releases/100/
/releases/101/
and then a symbolic link from the latest release to /current , all pretty standard.
the problem come when running artisan octane:start
vendor/laravel/octane/src/Commands/StartRoadRunnerCommand.php
will set roadrunner server with
'-o', 'server.command='.(new PhpExecutableFinder)->find().','.base_path(config('octane.roadrunner.command', 'vendor/bin/roadrunner-worker')),
where base_path(...) will resolve to /releases/101/ not to /current
so in next deployment e.g. (/releases/102/) , when we run artisan octane:reload it will still use old /releases/101/ source code
(i checked and yes if i go back to /releases/101/ and make a change it will be present after artisan octane:reload).
the solution is very simple, in config/octane.php
you just need to add:
'roadrunner'=>[
'command' => env('OCTANE_ROADRUNNER_WORKER_PATH', base_path('vendor/bin/roadrunner-worker')),
]
OCTANE_ROADRUNNER_WORKER_PATH=../../current
would be nice is this added to config/octane.php , and maybe don't use base_path
or even better a option to provide the path in octane:start
Steps To Reproduce
deploy a octane laravel app using deployer , octane:reload will not work as expected
inikoo
13th Feb 2025 @ 14:32
Package
filament/filament
Package Version
v4.3.1
Laravel Version
v12
Livewire Version
v3
PHP Version
PHP v8.4
Problem description
The search input in tableSelect is emptied when the table underneath has polling
Expected behavior
polling a table should only affect this table
Steps to reproduce
- Create two resources with many to many relationships
- Create a relationManager in one of those, with this table:
return $table
->poll()
->headerActions([
AttachAction::make()->tableSelect(AnyTable::class),
])
- Click on "Attach" button in the relation manager
- Try to search in table select
Detailed instructions in repo readme
Reproduction repository (issue will be closed if this is not valid)
https://github.com/CharlieEtienne/poll-empty-search
Relevant log output
CharlieEtienne
9th Dec 2025 @ 21:15
Provide updates to new functionalities in the v2 of the package.
kwakuOfosuAgyeman
5th Jan 2025 @ 05:45
Bug description
Chrome, Firefox, and Safari now support setting the width and height attributes on <source> elements within <picture> elements. You can read more about this in the web.dev article on optimizing CLS. This enhancement allows browsers to better handle layout shifts and varying aspect ratios for responsive images.
How to reproduce
Current Behavior:
Currently, Statamic Responsive Images does not take advantage of this browser capability. As a result, when multiple sources are provided, the appropriate width and height attributes are not applied to <source> elements, which may lead to layout shifts due to varying aspect ratios.
Proposed Enhancement:
Set appropriate width and height attributes on <source> elements based on their aspect ratios.
Benefits:
- Improved Visual Stability: Reduce Cumulative Layout Shift (CLS) by providing browsers with the correct dimensions upfront.
- Better Performance: Modern browsers can allocate the correct space for images during page load.
- Enhanced Responsiveness: Accurately reflect different image aspect ratios for a more consistent user experience.
Environment
Environment
Application Name: local
Laravel Version: 11.41.3
PHP Version: 8.3.16
Composer Version: 2.8.5
Environment: development
Debug Mode: ENABLED
URL: local.test
Maintenance Mode: OFF
Timezone: Europe/Paris
Locale: en
Cache
Config: NOT CACHED
Events: NOT CACHED
Routes: NOT CACHED
Views: NOT CACHED
Drivers
Broadcasting: null
Cache: file
Database: sqlite
Logs: stack / single
Mail: smtp
Queue: redis
Session: file
Statamic
Addons: 3
Sites: 1
Stache Watcher: Disabled (auto)
Static Caching: Disabled
Version: 5.46.1 PRO
Statamic Addons
rias/statamic-redirect: 3.9.3
spatie/statamic-responsive-images: 5.2.1
statamic/seo-pro: 6.5.0
Installation
Fresh statamic/statamic site via CLI
Antlers Parser
regex (default)
Additional details
Leveraging native width and height support on <source> elements can lead to significant improvements in layout stability and overall performance on modern browsers. This enhancement would allow the package to better handle responsive images by using up-to-date browser capabilities.
Thanks for considering this enhancement!
jimblue
7th Feb 2025 @ 22:03
Hello, When using php-flasher-toastr with Laravel 11, I encounter a TypeError: array_replace_recursive(): Argument #2 must be of type array, int given error in Illuminate\Translation\FileLoader at line 130. My environment:
- PHP: 8.3.7
- Laravel: 11.4.2
- php-flasher/flasher-toastr-laravel: 2.1
- php-flasher/flasher-laravel: 2.1 The error disappears when I uninstall php-flasher/flasher-toastr-laravel and php-flasher/flasher-laravel. Alternatively, ensuring that the value passed to with() is always a string (e.g., with('success', 'Message')) prevents the error.
Gnoth2n5
27th Mar 2025 @ 17:30
Sulu CMS separates its assets into assets/admin and assets/website, this means when installing Encore within a Sulu CMS install you will have to change a bunch of paths: https://docs.sulu.io/en/latest/cookbook/webpack-encore.html
This isn't my main issue, I think this is acceptable for an initial setup. But I do think we can improve what happens when you composer require a symfony bundle that provides stimulus controllers.
In the Sulu + Encore setup, the controllers.json file lives in assets/website/controllers.json. But since this path is hardcoded here:
The controllers.json is not updated automatically and there's no output telling you to manually do this either. So you're left a little lost in what is still missing. Also, figuring out what to manually add in controllers.json is quite tricky since most existing UX bundles don't document this manual setup.
Before I start hacking away at a PR, any suggestions how we can solve this properly? Or do we accept that this is not configurable and those who use custom paths just have to deal with it?
Thank you in advance.
rskuipers
27th Dec 2022 @ 21:16
Found the \Illuminate\Database\Eloquent\Concerns\HasAttributes::originalIsEquivalent() method during code diving and it should be usable for our trait! ๐
This PR would be mainly reasearch when that method was added, if it's compatible with our version support rules and switching our own change detection logic with the core one.
Gummibeer
20th Oct 2021 @ 10:03
Package
filament/filament
Package Version
v3.2.133
Laravel Version
v11.38.2
Livewire Version
No response
PHP Version
8.2
Problem description
When I use ->panelLayout('grid') sometimes the styles load wrong
SpatieMediaLibraryFileUpload::make('images_upload')
->collection('property_images')
->multiple()
->responsiveImages()
->image()
->imageEditor()
->label('Imรกgenes')
->imagePreviewHeight('250')
// ->panelLayout('grid')
->columnSpanFull()
Expected behavior
Steps to reproduce
SpatieMediaLibraryFileUpload::make('images_upload')
->collection('property_images')
->multiple()
->responsiveImages()
->image()
->imageEditor()
->label('Imรกgenes')
->imagePreviewHeight('250')
->panelLayout('grid')
->columnSpanFull()
I have discovered that if the gallery appears at the moment it loads fine, but when using tabs as I show in the project is when it happens constantly
Reproduction repository (issue will be closed if this is not valid)
https://github.com/danielreales7/test-spatie-lmedia
Relevant log output
danielreales7
21st Jan 2025 @ 15:42
Hello,
Is it possible to close a flash message by clicking on it and not just on clicking on the cross? If so, how to achieve it?
Regards, Fred
frdemoulin
13th Aug 2025 @ 20:21
When attempting to filter tests by test or file name pressing the "Enter" key has no effect.
Pressing "Enter" at the default screen correctly triggers a "test run" where all tests are run.
ntwb
25th Feb 2018 @ 10:49
Add in PHP 7.3 as Normalizer::normalize() argument for NFKC_Casefold normalization.
nicolas-grekas
7th Feb 2019 @ 10:11
Describe the bug
logUnguarded() works provided that $guarded is set explicitly in the model. If it is not set explicitly but globally set, say in AppServiceProvider using Model::unguard(); then nothing is logged.
To Reproduce
- remove
$fillableand$guardedfrom a model that use usesLogsActivity - call
Model::unguard();inAppServiceProviderin thebootmethod - set
public function getActivitylogOptions() : LogOptions
{
return LogOptions::defaults()->logUnguarded();
}
- Make some changes to a model and save them
Expected behavior Some changed properties should be logged but none are
Versions (please complete the following information)
- PHP: 8.1
- Database: MySql
- Laravel: 9.38
- Package: larvel-activitylog
colinmackinlay
20th Nov 2022 @ 12:31
Package
filament/filament
Package Version
v3.2.130
Laravel Version
v.11.35.0
Livewire Version
No response
PHP Version
PHP 8.3
Problem description
When you have an attribute named length in the database and you use the ->searchable(isIndividual: true) in the tables of filament you get a zero in the search field and the search field is not working. When deleting the zero to filter, the zero keeps coming back.
Expected behavior
That the zero is not there and that I am able to filter individual on an attribute named length.
Steps to reproduce
- Create a table with a column that is named length with type integer or float
- Create a standard resource of the model
- Make the column length individual searchable
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('id')
->label('ID'),
Tables\Columns\TextColumn::make('length')
->suffix(' mm')
->searchable(isIndividual: true)
->sortable(),
Tables\Columns\TextColumn::make('total_meters')
->suffix(' m')
->sortable(),
Tables\Columns\TextColumn::make('supplier_reference')
->label('Reference')
->sortable(),
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
Reproduction repository (issue will be closed if this is not valid)
https://github.com/Geoffry304/filament-length-attribute-issue
Relevant log output
No response
Geoffry304
12th Dec 2024 @ 14:30
What about allowing displaying post-install messages again, eg when running this?
composer recipes the/package
nicolas-grekas
1st Jun 2022 @ 09:13
Laravel Version
12.*
PHP Version
8.*
Database Driver & Version
No matter
Description
As we all know, whereBetween method may accept CarbonPeriod as $values argument. Lets look inside:
public function whereBetween($column, iterable $values, $boolean = 'and', $not = false)
{
$type = 'between';
if ($values instanceof CarbonPeriod) {
$values = [$values->getStartDate(), $values->getEndDate()];
}
$this->wheres[] = compact('type', 'column', 'values', 'boolean', 'not');
$this->addBinding(array_slice($this->cleanBindings(Arr::flatten($values)), 0, 2), 'where');
return $this;
}
But CarbonPeriod may not have end date! We can construct DatePeriod two ways: passing end-date or passing number of intervals:
$period1 = new \DatePeriod(now(), new \DateInterval('P2M'), now()->addMonths(2));
$period2 = new \DatePeriod(now(), new \DateInterval('P2M'), 2);
$period1 has end-date, but $period2 hasn't.
So I think that in such case method should calculate end-date itself.
Next problem is how between works. Mysql documentation says that between is equivalent to the expression (min <= expr AND expr <= max). Now look at DatePeriod documentation. The fourth argument is an $options, it may accept DatePeriod::EXCLUDE_START_DATE and DatePeriod::INCLUDE_END_DATE.
If DatePeriod excludes start-date, the query should be (min < expr AND expr <= max). If DatePeriod excludes end-date, the query should be (min <= expr AND expr < max). If DatePeriod excludes both dates, the query should be (min < expr AND expr < max).
So at the moment Eloquent is not absolutely correct.
And the last but not the least: why this method accepts CarbonPeriod and not accepts base DatePeriod?
I think, that whereBetween
- should accept
DatePeriod - should evaluate end-date when required
- should respect
EXCLUDE_START_DATEandINCLUDE_END_DATEoptions
Steps To Reproduce
No steps required
Cellard
11th Dec 2025 @ 19:22
Package
filament/filament
Package Version
v3.2.86
Laravel Version
v11.10.0
Livewire Version
v3.5.0
PHP Version
PHP 8.3.11
Problem description
Hi,
I've got a Filament resource, and in the create page I have a form with some reactive text fields that perform calculations, and update values on the form. For a little while I was getting odd behaviour like characters being removed, and other 'glitches' as I typed, esp. typing quickly, or deleting characters quickly. I managed to get this under control by using a debounce value of circa 1000ms. This makes sense to me, given the possible clashing of state updates coming from the server if the debounce is too low.
However I've now noticed if I change a reactive text field with the debounce set to 1000ms, and then hit the 'create' or 'save changes' buttons very quickly - as in during that debounce period, I end up not saving the latest data / state. It's fine if I wait over the 1000ms and save but obviously a user will expect to just hit save and all be well.
Is there a way to either force the state on the server to get the latest user entered data and perform any recalculations (things in afterStateUpdated for e.g.) before saving to DB? Or even temp disable the 'create' / 'save changes' buttons on forms until the latest server state is calculated and in the form thus ensuring I always capture the most up-to-date state?
Many thanks!
Lots of love for Filament by the way โค๏ธ
Expected behavior
Always re-calculate the latest state the user can see or disable saving until the state is recalculated.
Steps to reproduce
Here's a little resource form example showing the issue (from the example repo here). The debounce is increased to 10 seconds to more easily show the problem. If you change the text in field 'test' and press save in a FilamentPHP resource before 10 seconds elapse, you will notice no values are saved. If you try again and wait 10 seconds this time, both 'test' and 'test2' fields are saved as expected with 'test2' being a simple copy of 'test' produced from the code in afterStateUpdated.
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('test')
->afterStateUpdated(fn(Set $set, $state) => $set('test2',$state))
->live(debounce: 10000),
Forms\Components\TextInput::make('test2'),
]);
}
Reproduction repository (issue will be closed if this is not valid)
https://github.com/appymedia/filament-issue
Relevant log output
appymedia
16th Jan 2025 @ 17:50
When calling mb_convert_encoding() with $fromEncoding === 'HTML-ENTITIES', the polyfill does not return functionally equivalent strings to the native function. This is because mb_convert_encoding() uses html_entity_decode() when $fromEncoding === 'HTML-ENTITIES' and that function does not return characters for many numeric entities 0-31 and 127-159. For example:
<?php
require "vendor/symfony/polyfill-mbstring/Mbstring.php";
use Symfony\Polyfill\Mbstring as p;
for($i = 0; $i < 1024; $i++) {
$string = "&#" . $i . ";";
$mbstring = mb_convert_encoding($string, 'UTF-8', 'HTML-ENTITIES');
$polyfill = p\Mbstring::mb_convert_encoding($string, 'UTF-8', 'HTML-ENTITIES');
if($mbstring != $polyfill) {
echo "Mismatch: $string - mbstring: $mbstring; polyfill: $polyfill\n";
}
}
outputs:
Mismatch: � - mbstring: ; polyfill: �
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring:; polyfill: 
Mismatch:  - mbstring:
; polyfill: 
Mismatch:  - mbstring:
; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch:  - mbstring: ; polyfill: 
Mismatch: ' - mbstring: '; polyfill: '
Mismatch:  - mbstring: ; polyfill: 
Mismatch: € - mbstring: ย; polyfill: €
Mismatch:  - mbstring: ย; polyfill: 
Mismatch: ‚ - mbstring: ย; polyfill: ‚
Mismatch: ƒ - mbstring: ย; polyfill: ƒ
Mismatch: „ - mbstring: ย; polyfill: „
Mismatch: … - mbstring: ย
; polyfill: …
Mismatch: † - mbstring: ย; polyfill: †
Mismatch: ‡ - mbstring: ย; polyfill: ‡
Mismatch: ˆ - mbstring: ย; polyfill: ˆ
Mismatch: ‰ - mbstring: ย; polyfill: ‰
Mismatch: Š - mbstring: ย; polyfill: Š
Mismatch: ‹ - mbstring: ย; polyfill: ‹
Mismatch: Œ - mbstring: ย; polyfill: Œ
Mismatch:  - mbstring: ย; polyfill: 
Mismatch: Ž - mbstring: ย; polyfill: Ž
Mismatch:  - mbstring: ย; polyfill: 
Mismatch:  - mbstring: ย; polyfill: 
Mismatch: ‘ - mbstring: ย; polyfill: ‘
Mismatch: ’ - mbstring: ย; polyfill: ’
Mismatch: “ - mbstring: ย; polyfill: “
Mismatch: ” - mbstring: ย; polyfill: ”
Mismatch: • - mbstring: ย; polyfill: •
Mismatch: – - mbstring: ย; polyfill: –
Mismatch: — - mbstring: ย; polyfill: —
Mismatch: ˜ - mbstring: ย; polyfill: ˜
Mismatch: ™ - mbstring: ย; polyfill: ™
Mismatch: š - mbstring: ย; polyfill: š
Mismatch: › - mbstring: ย; polyfill: ›
Mismatch: œ - mbstring: ย; polyfill: œ
Mismatch:  - mbstring: ย; polyfill: 
Mismatch: ž - mbstring: ย; polyfill: ž
Mismatch: Ÿ - mbstring: ย; polyfill: Ÿ
While many of these are control characters (and the native function does return them), the single quote (dec 39) is particularly problematic.
cpeel
18th Mar 2021 @ 04:11
Currently you can only see the latest 3 articles, latest 5 threads and latest 5 replies of a user on their profile. It would be cool if we could paginate through those results. We already use livewire so would be cool if we could add some magic with that.
driesvints
10th Sep 2025 @ 19:37
Octane Version
2.8.1
Laravel Version
10.48.28
PHP Version
8.3.16
What server type are you using?
Swoole
Server Version
6.0.1
Database Driver & Version
No response
Description
I'm using Envoyer to deploy a Laravel Octane application, taking advantage of its zero-downtime deployment features.
However, Octane currently does not support zero-downtime deployment because it does not follow symlink directories. It always remains in the actual directory (instead of the symlinked one) where the Octane server was initially started. When the outdated release directory is deleted, Octane continues running in that location, causing errors on every request and resulting in 500 response codes on the live application.
Error thrown:
Warning: require(/var/www/domain.com/releases/202502010200023/vendor/laravel/octane/bin/bootstrap.php): Failed to open stream: No such file or directory in /var/www/domain.com/releases/202502010200023/vendor/laravel/octane/bin/swoole-server on line 18
Fatal error: Uncaught Error: Failed opening required '/var/www/domain.com/releases/202502010200023/vendor/laravel/octane/bin/bootstrap.php' (include_path='.:/usr/bin/[email protected]/8.3.16/share/[email protected]/pear') in /var/www/domain.com/releases/202502010200023/vendor/laravel/octane/bin/swoole-server:18
Stack trace:
#0 /var/www/domain.com/releases/202502010200023/vendor/laravel/octane/bin/swoole-server(95): {closure}(Array)
#1 [internal function]: {closure}(Object(Swoole\Http\Server), 0)
#2 /var/www/domain.com/releases/202502010200023/vendor/laravel/octane/bin/swoole-server(170): Swoole\Server->start()
#3 {main}
thrown in /var/www/domain.com/releases/202502010200023/vendor/laravel/octane/bin/swoole-server on line 18
#1 [internal function]: {closure}(Object(Swoole\Http\Server), 1)
#1 [internal function]: {closure}(Object(Swoole\Http\Server), 3)
#1 [internal function]: {closure}(Object(Swoole\Http\Server), 2)
#1 [internal function]: {closure}(Object(Swoole\Http\Server), 4)
#1 [internal function]: {closure}(Object(Swoole\Http\Server), 5)
Steps To Reproduce
Use any 0-downtime deployment or test it manually using the following instructions:
- Use the Swoole driver as an example.
cdone directory up from the project's base path.- Create a
currentsymlink directory for your project using the command:ln -nsf ./octane-project-test ./current - Start the Octane server:
php ./current/artisan octane:start - Copy your project to another directory:
cp -R ./octane-project-test ./octane-project-test-new - Activate the new release:
ln -nsf ./octane-project-test-new ./current - Reload the Octane server:
php ./current/artisan octane:reload - Remove the original project directory:
rm -rf ./octane-project-test
mikkpokk
2nd Mar 2025 @ 01:35
Laravel Version
12.40.2
PHP Version
8.4.15
Database Driver & Version
Postgres 18.1
Description
On Postgres, it appears that the from() / startingValue() calls in a migration file do not appear to do anything.
I have a very simple migration file with following up() method;
Schema::table('users', function (Blueprint $table) {
$table->bigIncrements('id')
->from(2000)
->change();
});
I do expect something related to alter sequence users_id_seq restart with 2000 as can be seen in; https://github.com/laravel/framework/blob/d3d7c2ec841795db97eb1c1f85da03a3aa6dbeb0/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php#L276 to be executed on the database server, however, it does not appear to be executed.
The same happens if you use a Schema::create() call, like this for example;
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id')
->from(100);
});
Based on the previous ::create() statement, the following queries should be sent to the database server;
array:2 [
0 => "create table "users" ("id" bigserial not null primary key)"
1 => "alter sequence users_id_seq restart with 100"
]
Yet the ID autoincrement values still start with 1.
If I execute the query alter sequence users_id_seq restart with 100 or alter sequence users_id_seq restart with 2000, manually through my SQL client, it does work.
Steps To Reproduce
- Create a simple migration like;
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id')
->from(100);
});
- Execute it
- Try to insert a row
- The primary ID of the table still starts with 1 instead of the expected 100.
sandervankasteel
12th Dec 2025 @ 00:21
I would love to see support for oAuth in Catchet. I know there are some other (closed) issues requesting the same functionality, but I think this would be a great addition for Catchet.
FoksVHox
28th Feb 2025 @ 08:29
Package
filament/tables
Package Version
v3.3.45
Laravel Version
v12.42.0
Livewire Version
v3.7.1
PHP Version
8.3.22
Problem description
when i delete a record from a filament table i get this error in the screenshot below
i noticed the error first on an old filament 3 project and i created a fresh laravel project with a fresh filament 3 installation to confirm the problem and it happend also in the fresh project
Expected behavior
i expect the record to be deleted with no console errors
Steps to reproduce
- Clone the repo
- Migrate the database
- Create a filament user
- Run the seeders
- Login to the dashboard
- Go to the posts resource and open the browser console
- Delete a post from the filament table and you will see the browser console errors
Reproduction repository (issue will be closed if this is not valid)
https://github.com/tabatii/filament-bug
Relevant log output
tabatii
12th Dec 2025 @ 23:37
Hi Developer,
I appreciate your work on this projectโit's really well-built and helpful for developers like me. I recently implemented it and found it working great.
However, I noticed that the .fl-wrappe class currently has z-index: 10, which causes it to appear under the header when using a fixed or sticky header. I suggest updating it to z-index: 99999 to ensure proper visibility.
Thanks for your efforts and for sharing this project!
Best regards, Md. Jahangir Alam Rohan.
rohan9222
18th Feb 2025 @ 04:20
Calling for help from Docker experts. We need to create the best possible docker-compose.yml file for this project. The application requirements are well defined (we use env vars, Webpack Encore, PHP 7.1, Symfony 4.1, SQLite database, etc.) so it should be possible to create that file.
javiereguiluz
21st May 2018 @ 09:37
- standard tags
- input fields
- components
- patterns
Add code snippets for each block
willemvb
25th Jul 2016 @ 12:49
Laravel Version
12.39.3
PHP Version
8.2
Database Driver & Version
MYSQL 8.4.3
Description
When I try to import a schema.dump file into a MySQL database over SSL, I canโt provide the --ssl-cert and --ssl-key options, because the import command only supports --ssl-ca. Also, why is the --ssl=off option commented out?
Steps To Reproduce
laravel/framework/src/Illuminate/Database/Schema/MySqlSchemaState.php line 108
protected function connectionString()
{
$value = ' --user="${:LARAVEL_LOAD_USER}" --password="${:LARAVEL_LOAD_PASSWORD}"';
$config = $this->connection->getConfig();
$value .= $config['unix_socket'] ?? false
? ' --socket="${:LARAVEL_LOAD_SOCKET}"'
: ' --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}"';
if (isset($config['options'][\PDO::MYSQL_ATTR_SSL_CA])) {
$value .= ' --ssl-ca="${:LARAVEL_LOAD_SSL_CA}"';
}
// if (isset($config['options'][\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]) &&
// $config['options'][\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT] === false) {
// $value .= ' --ssl=off';
// }
return $value;
}
hazratmilad
19th Nov 2025 @ 13:59
Dashboard showing Operational
Front end showing no issues, but the status seems to still be linked to the incident even if it's closed as fixed
glipschitz
25th Jan 2025 @ 11:01
What happened?
After installation, I noticed that in the browser console it outputs an error of wireEl is undefined.
How to reproduce the bug
Just install this package in a livewire project, preferable with Filament's admin package. And see the browser console.
composer create-project laravel/laravel test;
composer require filamentphp/filament;
composer require spatie/laravel-blade-comments;
Then go through the browser console and see the error
Package Version
1.0.1
PHP Version
8.2.0
Laravel Version
10.13.0
Which operating systems does with happen with?
macOS
Notes
Filament ......................................................
Packages ...... filament, forms, notifications, support, tables
Version .............................................. v2.17.44
Views ..................................... PUBLISHED: filament
sawirricardo
2nd Jun 2023 @ 07:15
Laravel Version
12.37.0
PHP Version
8.3
Database Driver & Version
No response
Description
Iโve noticed that both the CacheFailedOver and QueueFailedOver events in Laravel are triggered with every cache read or queue operation, even if there isn't an actual failover happening. This could lead to unnecessary event firing, especially in high-traffic systems, where it might cause excess logging, notifications, or processing.
Suggested Improvement: It would be really helpful if these events were only triggered when a true failover occurs. For instance, when the primary cache or queue connection fails, and Laravel falls back to the secondary connection, thatโs when the event should fire. This would make the events more meaningful, reducing the noise caused by cache or queue operations that donโt actually involve failovers.
Use Case: Reducing Unnecessary Events: It would be great if events were only triggered when thereโs an actual failover, which would help minimize unnecessary logging.
Improved Performance: This change would help prevent unnecessary system overhead from processing events during normal operations.
Clearer Monitoring: Triggering the events only when the fallback happens would make monitoring more accurate and provide more meaningful alerts.
Current Behavior: Right now, the events seem to fire every time a cache or queue operation takes place, regardless of whether the system is actually falling back to a secondary store.
Possible Solution: It might be useful for the events to be triggered only when thereโs a real connection failure that leads to the fallback, rather than firing on every operation. This could help ensure the events are more focused and relevant.
Steps To Reproduce
Configure failover for cache/queue in .env:
CACHE_DRIVER=failover
QUEUE_CONNECTION=failover
Set up failover in config/cache.php and config/queue.php with redis as the primary store/connection and database as the fallback.
Simulate Redis failure (disconnect or stop Redis service).
Run a cache or queue operation (e.g., Cache::get('key') or dispatch a job).
Expected Behavior: The CacheFailedOver and QueueFailedOver events should only fire when an actual failover happens.
Current Behavior: The events fire on every cache/queue operation, even if no failover occurs.
anwarx4u
12th Nov 2025 @ 09:42
Describe the bug
I have a table which has an order column. When I reorder the elements I update each model with the new order.
Because the table has some large JSON columns I select only id and order columns for efficiency. I set the new order and save the model.
foreach (Faq::query()->get(['id', 'order']) as $faq) {
$faq->order = $newOrder[$faq->id];
$faq->save();
}
The diffs created in the activity_log table look like this:
{
"old": {
"order": 1,
"answer": null,
"question": null
},
"attributes": {
"order": 2,
"answer": "long JSON content",
"question": "long JSON content"
}
}
From what I see laravel-activitylog fetches the model with all columns from the database before creating a log entry which kind of defeats the purpose of my "select list optimization" and produces an incorrect diff.
Generally I want these large JSON columns to be logged in case a user changes them but in this case I only change the order column so I would like to see only the order column in the diff.
I have tried running these updates straight off the Eloquent builder:
Faq::query()->where('id', $id)->update(['order' => $newOrder[$id]]);
but in this case nothing is logged.
I have the following activitylog configuration for my models:
public function getActivitylogOptions(): LogOptions
{
return LogOptions::defaults()
->logAll()
->logOnlyDirty()
->logExcept([
'id',
'created_at',
'updated_at',
]);
}
To Reproduce Select a subset of columns from the database, change these columns, save the model and see that other (not initially selected) columns are present in the diff.
Expected behavior Only columns that've actually been changed should be present in the diff.
Versions
- PHP: 8.1
- Database: MySQL 8
- Laravel: 9.31.0
- Package: 4.6.0
KKSzymanowski
28th Sep 2022 @ 21:53
Not PHPUnit 11 because we still need to support for PHP 8.1
e.g. at the moment we have stuff like:
- Symfony\Flex\Tests\Configurator\CopyFromPackageConfiguratorTest::testConfigureAndOverwriteFiles The at() matcher has been deprecated. It will be removed in PHPUnit 10. Please refactor your test to not rely on the order in which methods are invoked.
Help wanted ๐
nicolas-grekas
23rd May 2025 @ 10:13
Package
filament/filament
Package Version
4-beta6
Laravel Version
12
Livewire Version
3
PHP Version
8.4
Problem description
Not sure if I'm doing something wrong, but I can't get charts in nested non-active tabs to render properly on page load, or update properly. The video shows the problem using the reproduction repo.
I'm using this to render the chart in 3 places:
Livewire::make(StatChartWidget::class, fn ($record) => [
'record' => $record,
])
->key(Str::random(10))
In the video, the following happens:
1. Page load
- Chart in the body loads โ
- Chart in the visible tab loads โ
- Chart in the non-visible nested "Data" tab is empty โ
2. "Refresh data" to update the model's data attribute while the 'Data' tab is not active
- Chart in the body refreshes โ
- Chart in the visible tab refreshes โ
- Chart in the non-visible nested "Data" tab is not refreshed โ
2. "Refresh data" to update the model's data attribute while the 'Data' tab is active
- Chart in the body refreshes โ
- Chart in the visible tab refreshes โ
- Chart in the non-visible nested "Data" tab refreshes โ
I'm using #[Reactive] but I also tried refreshing via an event, and tried ->lazy(). Neither helped.
https://github.com/user-attachments/assets/6cb1cb43-8c9b-4f3e-ab62-face3931473a
Expected behavior
Charts / Livewire components in a page should render and update correctly regardless of what tab they're in.
Steps to reproduce
- Clone repo
- Run
migrate:fresh --seedto seed statistics table - Go to Statistics resource
- See video and steps outlined in description to reproduce
Reproduction repository (issue will be closed if this is not valid)
https://github.com/binaryfire/filament-bug-reproduction
Relevant log output
binaryfire
19th Jun 2025 @ 09:21
Hello,
if you plan an scheduled maintenance with an START and END date it will never appear on the dashboard. Only if you create them with an START date only it will appear. I think this is a bit confusing, because if i plan an schedule an weekly update, i want to declare an timeslot and dont want to enter again the cachet-scheduled-maintenance to enter an date at the end of my maintenance.
Can this function be controlled or changed?
Thanks
kash1983
27th Jan 2025 @ 09:33
Octane Version
v2.3.10
Laravel Version
v11.6.0
PHP Version
v8.3.6
What server type are you using?
FrankenPHP
Server Version
v1.1.4 PHP 8.3.6 Caddy v2.7.6
Database Driver & Version
Postgress
Description
Last week we updated our app previously using php-fpm running on Forge to use Laravel Octane with FrankenPHP. Our site is mostly an API that handles analytics events (Like google analytics). It uses the default Laravel api throttling.
In staging our app worked fine (30 req/sec same IP), but when deploying to production (1400 req/sec, different IPs) it started to fail, giving a lot of 429 Too Many Requests.
I quickly rolled back to php-fpm and after a few hours tried again with the same problem. Rolled back and the next day I switched to Swoole and it worked perfectly without changing a single line of code nor having to redeploy anything. So I can confidently say that is NOT a bug in my code, but rather a bug with FrankenPHP or the Octane integration with FrankenPHP.
My theory is that the RateLimiter is not reseting between requests so it's shared between different users. So multiple different users trigger the rate limiter:
This is my Rate limiter configuration:
// AppServiceProvider
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
});
our production CACHE_STORE is redis. Throttling worked perfectly fine without octane and with octane but using Swoole. It failed with hundred of 429 Too Many Requests after installing FrankenPHP.
This is our bootstrap/app.php:
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use Illuminate\Support\Facades\App;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
commands: __DIR__.'/../routes/console.php',
health: '/up',
then: function () {
Route::middleware('api')
->prefix('api')
->as('api.')
->domain(config('app.domain'))
->group(base_path('routes/api.php'));
Route::middleware('web')
->domain(config('app.domain'))
->group(base_path('routes/web.php'));
Route::middleware('web')
->domain(config('playsaurus.ads.domain'))
->group(base_path('routes/ads.php'));
}
)
->withMiddleware(function (Middleware $middleware) {
$middleware->throttleApi();
$middleware->redirectTo(
guests: '/login',
users: '/',
);
$middleware->web(append: [
\App\Http\Middleware\HandleInertiaRequests::class,
\Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets::class,
]);
$middleware->api(append: [
\App\Http\Middleware\ConfigureLocale::class,
]);
$middleware->alias([
'localize' => \App\Http\Middleware\ConfigureLocale::class,
'embed' => \App\Http\Middleware\AllowsEmbeding::class,
]);
})
->withExceptions(function (Exceptions $exceptions) {
$exceptions->dontReport([
\App\Services\Announcements\InvalidVariantKey::class,
\App\Exceptions\CouponRedeemException::class,
]);
})->create();
Steps To Reproduce
It's difficult to reproduce. Because I can't test it in production because that would mean a lot of downtime for our users.
My theory is that it would be possible to reproduce from multiple different IPs. But since I don't have the means to test it, I don't know.
jhm-ciberman
14th May 2024 @ 00:15
When encountering nested tokens, they are parsed only during formatting, not when compiling the pattern. And the type of tokens are validated only during the rendering as well. But the native implementation detects such error during the instantiation: https://3v4l.org/Sf69D This means that the error handling required for the polyfill is not the same than for the native implementation.
stof
23rd Oct 2018 @ 15:58
Package
filament/filament
Package Version
v4.0.7
Laravel Version
v12.28.1
Livewire Version
^3.5
PHP Version
PHP 8.4
Problem description
Describe the bug unsavedChangesAlerts() not triggered when reordering a Repeater component. See animated Gif as it shows exactly the issue.
Screenshots ANIMATED GIF
Desktop (please complete the following information): I'm using Desktop
- OS: Windows 11 (updated)
- GPU: NVIDIA RTX 3050]
- Backend: OpenGL
- Google Chrome (updated to latest version)
- Laravel stable 12.28.1
- Filament stable 4.0.7
- Livewire ^3.5 (default with filament)
- PHP 8.4
Additional context Need more context, just ask, but you'd probably be able to find it in the linked repository.
Expected behavior
Expected behavior Expecting the warning to pop-up saying that you will lose changes made in the form when leaving the page without saving first.
Steps to reproduce
To Reproduce Steps to reproduce the behavior:
Using existing code (option 1)
https://github.com/christoferd/filament-bug-demo-2025
- clone, install, setup .env, migrate, seed
- go to Customers resource,
- Edit a Customer
- then follow steps below from step 3.
DIY (option 2)
- add
->unsavedChangesAlerts()to the Panel - go to a Form/Resource Edit that contains a Repeater component
- make sure there are at least 2 records in the Repeater component
- save the form, refresh the page
- change the order of the Repeated records, do not save
- click on a navigation link that will take you away from the page (expecting the warning to pop-up)
- Notice the issue, that the warning did not popup and the next page loaded, losing the changes made in the edit form.
Reproduction repository (issue will be closed if this is not valid)
https://github.com/christoferd/filament-bug-demo-2025
Relevant log output
**Logs**
I didn't see anything in the Browser Console Log, and there are no Laravel error logs.
If there are logs to produce then let me know.
christoferd
8th Sep 2025 @ 13:06
Package
filament/tables
Package Version
3.3.14
Laravel Version
11.44.7
Livewire Version
3.6.3
PHP Version
8.3.19
Problem description
When I use the search field to filter data, horizontal scrolling no longer works on mobile devices. I encountered the same problem in the demo (https://demo.filamentphp.com/shop/products). Trying to filter the data, it becomes impossible to scroll horizontally.
Expected behavior
horizontal scrolling also with filtered data on mobile
Steps to reproduce
Trying to filter the data
Reproduction repository (issue will be closed if this is not valid)
https://github.com/filamentphp/demo
Relevant log output
phphelloworld
10th May 2025 @ 10:39
In raising this issue, I confirm the following (please check boxes):
- I have read and understood the contributors guide.
- I have checked the pull requests tab for existing solutions/implementations to my issue/suggestion.
- I have checked that the bug-fix I am reporting can be replicated.
Description of the problem
One of the important reasons for using hyperscript is that it handles escaping of characters which are reserved in html. Which prevents XSS.
spatie/html-element does not do this. Mainly because it uses strings as intermediate format instead of an object representation of the DOM.
Erikvv
1st Feb 2018 @ 02:19
Package
filament/filament
Package Version
v4.2.2
Laravel Version
v12.38.1
Livewire Version
v3.6.4
PHP Version
8.4.14
Problem description
I am filtering widget data by following this guide: https://filamentphp.com/docs/4.x/widgets/overview#filtering-widget-data. The widget data is reloaded before even selecting an option.
I have a Dashboard page with filters form. When opening the select dropdown, it reloads all the widgets available on page and runs all the queries even before showing the select drop down. This delays the select drop down options until all the widget data is reloaded. Once all the queries are run and the request finishes, thats when it populates the options for select field.
I have also tried Filtering widget data using an action modal But same problem with Modal as well, even clicking the Modal action button reloads the data and runs all the queries before even opening the Modal.
Discord Discussion URL: https://discord.com/channels/883083792112300104/1440212167616892999
Expected behavior
Clicking on select field should not reload the widget data unless an option selected.
Steps to reproduce
- Clone the repo
- Follow the installation guide in README
- Open Filament admin panel at /admin
- Open Up DebugBar. Click on Group select field and you will see that it creates a new Livewire request which shows the query for getting groups but also a query for Users count.
Reproduction repository (issue will be closed if this is not valid)
https://github.com/mansoorkhan96/filament-widget-issue
Relevant log output
mansoorkhan96
18th Nov 2025 @ 11:03
Laravel Version
12.41.1
PHP Version
8.5.0
Database Driver & Version
PostgreSQL 18.1 (pdo_pgsql, libpq 18.1) on ARM64 Docker
Description
Laravel crashes with SIGSEGV (exit code 139) when using SESSION_DRIVER=database with PostgreSQL on PHP 8.5. The crash occurs during session regeneration after Auth::attempt() or
Auth::login().
Important: A standalone custom PDO session handler does NOT crash. The issue is specific to Illuminate\Session\DatabaseSessionHandler.
Server Logs
laravel.test-1 | WARN exited: php (exit status 139; not expected) laravel.test-1 | INFO reaped unknown pid 228 (terminated by SIGSEGV)
What Works
SESSION_DRIVER=rediswith PostgreSQLSESSION_DRIVER=filewith PostgreSQL- Custom PDO session handler (standalone)
- All regular PDO PostgreSQL queries
What Doesn't Work
Illuminate\Session\DatabaseSessionHandlerwith PostgreSQL on PHP 8.5
Possible Cause
In DatabaseSessionHandler::getDefaultPayload(), the handler resolves Guard::class to get user_id. During session regeneration after auth, this may create a problematic interaction that
triggers segfault in PHP 8.5's pdo_pgsql.
Environment
- Ubuntu 24.04.3 LTS (Docker)
- Architecture: ARM64 (Apple Silicon)
- Laravel Sail
Steps To Reproduce
- Fresh Laravel 12 + PostgreSQL setup
- Configure
.env: DB_CONNECTION=pgsql SESSION_DRIVER=database - Run
php artisan session:table && php artisan migrate - Create a user
- Implement login:
if (Auth::attempt($credentials)) {
session()->regenerate(); // SIGSEGV here
return redirect('/dashboard');
}
6. Submit login form โ PHP crashes with exit code 139
Workaround: Use SESSION_DRIVER=redis
serdardb
5th Dec 2025 @ 22:44
Package
filament/filament
Package Version
v3.2.93
Laravel Version
v10.48.16
Livewire Version
v3.5.2
PHP Version
v8.2.12
Problem description
When a column in the database is of type geometry, the Filament panel feature breaks (it's not possible to visualize the record).
When I fill the column with NULL value, it works fine, but when I fill it with the POINT value containing Latitude and Longitude, it stops working.
Expected behavior
I expected to be able to visualize the record.
View record in table
Steps to reproduce
Create Model and Migration
php82 artisan make:model Coleta --migration
Migration
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('coletas', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->geometry('geo')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('coletas');
}
};
Model
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Coleta extends Model
{
use HasFactory;
protected $table = 'coletas';
protected $fillable = [
'id',
'name',
'geo'
];
}
Seeder
$coleta = new \App\Models\Coleta();
$coleta->name = 'Test';
$coleta->geo = \Illuminate\Support\Facades\DB::raw('POINT(46.646748, 24.562727)');
$coleta->save();
Create Resource
php artisan make:filament-resource Coleta --generate
Resource
<?php
namespace App\Filament\Resources;
use App\Filament\Resources\ColetaResource\Pages;
use App\Filament\Resources\ColetaResource\RelationManagers;
use App\Models\Coleta;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
class ColetaResource extends Resource
{
protected static ?string $model = Coleta::class;
protected static ?string $navigationIcon = 'heroicon-o-chevron-double-right';
protected static ?string $navigationLabel = 'Coletas';
protected static ?string $navigationGroup = 'Reciclagem';
protected static ?string $modelLabel = 'Coleta';
protected static ?string $pluralModelLabel = 'Coletas';
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('name')
->label('Name')
->required(),
])->columns(1);
}
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('id')
->label("#")
->sortable(),
Tables\Columns\TextColumn::make('name')
->label('name'),
Tables\Columns\TextColumn::make('created_at')
->label("Criado em")
->dateTime("d/m/Y H:i:s")
->sortable()
->toggleable(isToggledHiddenByDefault: false),
Tables\Columns\TextColumn::make('updated_at')
->label("Atualizado em")
->dateTime("d/m/Y H:i:s")
->sortable()
->toggleable(isToggledHiddenByDefault: true),
])
->filters([
//
])
->actions([
Tables\Actions\ActionGroup::make([
Tables\Actions\ViewAction::make(),
Tables\Actions\EditAction::make(),
//Tables\Actions\DeleteAction::make(),
]),
])
->bulkActions([
/*Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),*/]);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => Pages\ListColetas::route('/'),
'create' => Pages\CreateColeta::route('/create'),
'edit' => Pages\EditColeta::route('/{record}/edit'),
];
}
}
Record in Table
Console Browser Error
Column geo in MySQL PhpMyAdmin
Column geo with value POINT (lat, lng) in MySQL PhpMyAdmin
Reproduction repository (issue will be closed if this is not valid)
https://github.com/matheusjohannaraujo/bug-template-laravel-filament/
Relevant log output
No error appears in laravel.log
matheusjohannaraujo
13th Jul 2024 @ 18:38
This will probably be a component to search and select an image from unsplash.
joedixon
12th Oct 2021 @ 19:59
We are logging activity of several models, some using SoftDeletes trait and others not.
When we set config option 'subject_returns_soft_deleted_models' => true then calling subject() on any model not using SoftDeletes trait throws an exception: Call to undefined method Illuminate\Database\Eloquent\Builder::withTrashed().
Can the subject() method below be made to check first whether the Model uses the SoftDeletes trait? Or perhaps check whether withTrashed() is a defined method on the Model? I tried a few things but couldn't figure out how to get the class of the Model..
bluec
7th Nov 2018 @ 13:44
Is LDAP support planned? I saw there was a lot of interest in this with version 2. Would be nice to have this onboard for v3. There is a package available https://github.com/DirectoryTree/LdapRecord-Laravel https://chrispian.com/laravel-filament-tutorial-customize-login-to-use-ldap
julianstolp
11th Mar 2025 @ 14:11
AST, or "abstract syntax tree", creates the expectation of a nested tree structure. In the case of a query string, the AST will only ever be one level deep; as multi nodes are combined into one.
If anyone wants to suggest a better, more clear name: you're welcome.
brendt
20th Dec 2018 @ 13:41
Hi ๐๐ผ!
I am coming here to gather some feedback on my idea before starting working on it.
Background
I wanted to create a POC of https://github.com/symfony/skeleton made for Sylius. I created a simple recipe for sylius/core-bundle, then an example skeleton repo and I have found out my recipes does not work as another recipe already write files with the same name. Then, I noticed symfony/framework-bundle is always put as the first recipe to be executed, and this is a thing I wish to be able to configure.
Goal
Somehow allow myself to make (in this POC case) sylius/core-bundle as a first recipe to be executed. Of course, I can fork symfony/flex, but it would be perfect to avoid this way.
Idea
The idea is simple, we allow configuring such list for example in this way:
{
...
"extra": {
"flex": {
"prioritized-recipes": [
"sylius/core-bundle",
"another/sylius-package",
...
]
}
}
...
}
In Flex we could implement this +/- this way:
// symfony/framework-bundle recipe should always be applied first after the metapackages
// however, we allow to override it with a list of prioritized recipes
$recipes = $this->getPrioritizedRecipes();
$recipes = array_merge($recipes, [
'symfony/framework-bundle' => null,
]);
$packRecipes = [];
$metaRecipes = [];
instead current
// symfony/framework-bundle recipe should always be applied first after the metapackages
$recipes = [
'symfony/framework-bundle' => null,
];
$packRecipes = [];
$metaRecipes = [];
Why?
- In some projects, we may want to load our recipes before the Symfony's ones
- In frameworks based on Symfony (like Sylius) we need to set up the whole project in our own way, so
framework-bundleas a first recipe to be executed makes it unable for us
Other options
I have not checked it yet, but I believe we can achieve the similar feature using Composer's Event Dispatcher. But first, I would like to hear if such a feature is welcomed. Or maybe you have a better idea how to solve this. I am open to provide such feature right after we agree on some solution.
jakubtobiasz
7th Nov 2022 @ 19:24
Package
filament/filament
Package Version
v3.x โ Filament Demo site
Laravel Version
Whatever is used in the Filament Demo site as of today
Livewire Version
v3.x โ Filament Demo site
PHP Version
Whatever is used in the Filament Demo site as of today
Problem description
See the following for a video demonstration of the issue on Filament's demo site: app.birdeatsbug.com/vmq0tUZ66zl2wkfJydzNXVUP3kI-pnGC-bxe2Uqua1ES
Navigating away from, and back/forward via the browser to, a Filament form does not rehydrate the form fields in question, resulting in an unexpected null error for said input, even when the browser has a non-null value for the form field.
Expected behavior
Expected that the submission of the form would reflect the visual state of the form fields.
Steps to reproduce
See the following for a video demonstration of the issue on Filament's demo site: app.birdeatsbug.com/vmq0tUZ66zl2wkfJydzNXVUP3kI-pnGC-bxe2Uqua1ES
This appears to be because the form fields are not rehydrated on browser back/forward cache.
Reproduction repository (issue will be closed if this is not valid)
https://github.com/johnbacon/demo
Relevant log output
johnbacon
25th Jun 2025 @ 14:07
using prompt engineering techniques provide enhancement to the Gemini service class in the Gemini prompt class, creating functions commonly used in Laravel applications.
kwakuOfosuAgyeman
5th Jan 2025 @ 05:43
Package
filament/filament
Package Version
v4.0.18
Laravel Version
v12.30.1
Livewire Version
v3.6.4
PHP Version
PHP 8.3.13
Problem description
There is an intermittent issue with the following error displaying, at least in FireFox. Sometimes it happens sometimes it doesn't. It seems to happen less often in the reproduction repo that I made for this issue report.
I think this might be some kind of race condition. You may have to refresh with the console open a couple times for it to display.
Expected behavior
It just, shouldn't error out. It would work "as expected".
Steps to reproduce
I'm attaching the simplest possible way to replicate this. Also attaching a link to a repo.
Filament Page class
<?php
namespace App\Filament\Pages;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Pages\Page;
use Filament\Schemas\Schema;
use Filament\Support\RawJs;
class Test extends Page
{
protected static string $routePath = '/test';
protected string $view = 'filament.pages.test';
public ?array $data = [];
public function mount(): void
{
$this->form->fill([
'price' => '1234.56',
]);
}
public function form(Schema $schema): Schema
{
return $schema
->components([
TextInput::make('price')
->mask(RawJs::make('$money($input)'))
->live(),
Textarea::make('description'),
])
->statePath('data');
}
}
Filament Page View
<x-filament-panels::page>
<form wire:submit="create">
{{ $this->form }}
</form>
<x-filament-actions::modals />
</x-filament-panels::page>
Reproduction repository (issue will be closed if this is not valid)
https://github.com/GlitterCakes/filament-bug-report
Relevant log output
GlitterCakes
21st Sep 2025 @ 03:56
Problem Statement
Quick shares (Slack, Discord, bug reports) need lightweight format - video links are heavy.
Proposed Solution
Export video clips as animated GIFs.
Alternatives Considered
- Short video clips (still too heavy for inline)
Implementation Ideas
- FFmpeg conversion
- Select portion of video
- Limit to ~15-30 seconds
- Optimize file size
gurpreetkaits
29th Dec 2025 @ 11:18
using prompt engineering techniques provide enhancement to the Claude service class in the Claude prompt class, creating functions commonly used in Laravel applications. For example, brand builder, seo product optimizer, video and or image captioner, automated chatbots #goodfirstissue
kwakuOfosuAgyeman
5th Jan 2025 @ 05:38
The friendly-errors-webpack-plugin has a built-in transformer/formatter for when a module is missing. To see the behavior, try (in any JavaScript file):
require('foo'); // foo is not a module that is installed
The error is:
This dependency was not found:
- foo in ./app/Resources/assets/js/app.js To install it, you can run: npm install --save foo
The problem is the npm install part... which should be yarn add to avoid confusion with our users. There is an issue about this: https://github.com/geowarin/friendly-errors-webpack-plugin/issues/33
weaverryan
25th Jun 2017 @ 23:10
Bug description
Currently, the plugin calculates width/height incorrectly when swapping aspect ratios, leading to incorrect HTML output. When changing the aspect ratio of an image, the longest side should remain fixed, and the other side should be calculated accordingly.
How to reproduce
For an image of 3000x1688px as a source:
{{ responsive:image ratio="16/9" md:ratio="9/16" }}
it returns:
<picture>
<source [...] >
<source [...] >
<source [...] >
<img src="/img/asset/hash/image.jpg?w=3000&h=1688&s=9358bb54be5d388a9a2529a4196dcfc6" alt="" width="3000" height="1688">
</picture>
Now for the same image as source but with:
{{ responsive:image ratio="9/16" md:ratio="16/9" }}
it returns:
<picture>
<source [...] >
<source [...] >
<source [...] >
<img src="/img/asset/hash/image.jpg?w=3000&h=5333&s=6c5c0bb8447dbd7ff61a692f98b5f46d" alt="" width="3000" height="5333">
</picture>
The calculated aspect ratio is correct, but the dimensions are not. The generated values exceed the original image size.
In this last example, the correct height should be 3000px, and the width should be 1688px to ensure the image stays within its original dimensions.
Environment
Environment
Application Name: local
Laravel Version: 11.41.3
PHP Version: 8.3.14
Composer Version: 2.8.5
Environment: development
Debug Mode: ENABLED
URL: local.test
Maintenance Mode: OFF
Timezone: Europe/Paris
Locale: en
Cache
Config: NOT CACHED
Events: NOT CACHED
Routes: NOT CACHED
Views: CACHED
Drivers
Broadcasting: null
Cache: file
Database: sqlite
Logs: stack / single
Mail: smtp
Queue: redis
Session: file
Statamic
Addons: 3
Sites: 1
Stache Watcher: Disabled (auto)
Static Caching: Disabled
Version: 5.46.0 PRO
Statamic Addons
rias/statamic-redirect: 3.9.3
spatie/statamic-responsive-images: 5.2.1
statamic/seo-pro: 6.5.0
Installation
Fresh statamic/statamic site via CLI
Antlers Parser
regex (default)
jimblue
3rd Feb 2025 @ 23:33
Laravel Version
12.43
PHP Version
8.3
Database Driver & Version
No response
Description
When using Redis-native rate limiting (via ThrottleRequestsWithRedis), the throttle middleware generates Redis keys without a stable namespace.
The key generation logic lives in ThrottleRequests::handle() and produces keys based on the request signature (hashed identifier), which results in raw, unhaspaced Redis keys (e.g. SHA-1 hashes).
While this works in unrestricted Redis environments, it breaks in Redis installations where ACLs are enforced using key patterns (common in managed Redis / Valkey services).
In such environments, Redis-native throttling fails with:
NOPERM No permissions to access a key
even when all required Redis commands (including EVAL) are explicitly allowed.
This behavior is inconsistent with other Redis-backed features in Laravel (cache, queue, session), which always use namespaced keys (laravel:, queues:*).
Additional context
The throttle middleware already supports a $prefix argument, which is concatenated to the generated key in ThrottleRequests::handle().
However, this prefix is designed for logical separation of rate limiters at the route level (e.g. distinguishing different limits on the same endpoint), not as a stable infrastructure-level namespace.
Because the prefix is optional, route-specific, and user-provided, it cannot be reliably used to ensure compatibility with Redis ACLs based on key patterns.
For comparison, using the cache-based throttle middleware (ThrottleRequests) with Redis configured as the cache driver works correctly in the same ACL-restricted Redis environments, as cache keys are properly namespaced via the cache prefix.
Possible improvement
Providing a stable, overrideable namespace for Redis-based rate limiter keys would make the middleware compatible with Redis ACLs while preserving backward compatibility.
For example, this could be achieved by introducing a protected method that returns an optional infrastructure-level key prefix (defaulting to an empty string), which would be prepended to the generated throttle key.
This approach would preserve existing behavior by default, while allowing applications running in ACL-restricted Redis environments to safely namespace rate limiter keys.
Steps To Reproduce
-
Create a new Laravel application.
-
Configure Redis as the backend for rate limiting and enable Redis-native throttling (i.e. use
ThrottleRequestsWithRedis). -
Configure Redis/Valkey with ACLs that restrict access by key pattern, for example:
- Allow all commands required by Redis-based throttling (including
EVAL). - Allow access only to keys matching a specific prefix (e.g.
throttle:*orlaravel:*).
- Allow all commands required by Redis-based throttling (including
-
Apply the throttle middleware to a route:
Route::middleware('throttle:5,1')->get('/test', fn () => 'ok'); -
Send a request to the route.
-
Observe that Redis immediately returns the following error:
NOPERM No permissions to access a key -
Inspect the Redis key used by the throttle middleware: it is a raw hash without a namespace and therefore does not match the allowed ACL key patterns.
lordcoste
5th Jan 2026 @ 18:11
Describe the bug
When you attempt to dump a binary string or anything containing one (like an array or an object), Ray does not dump anything. It just fails silently.
Versions
Ray version (you can see this in "About Ray"): 2.8.1
You can use composer show to get the version numbers of:
- spatie/ray package version: 1.41.2
- spatie/laravel-ray package version (if applicable): 1.37.1
PHP version: 8.2.17 Laravel version (if applicable): 11.18.1
To Reproduce
Add this in your code:
ray(hex2bin('ae0f3d'));
Expected behavior
Ray should display this (like the console when dump is used):
b"ยฎ\x0F="
Desktop (please complete the following information):
- OS: MacOs
- Version: 14.6.1
sebj54
27th Aug 2024 @ 14:57
While working on the new version of https://github.com/symfony/stimulus-bridge, I noticed some dead code from https://github.com/symfony/webpack-encore/pull/1062:
Kocal
28th Jan 2025 @ 21:55
What happened?
I just installed package and complement for AI powered solution. When I create an issue to test it I get :
I had to change the links function like this to make it work for me:
public function links(): array
{
$rawText = Str::finish($this->rawText, 'ENDLINKS');
$textLinks = $this->between('LINKS', 'ENDLINKS', $rawText);
$textLinks = explode(PHP_EOL, $textLinks);
$links = [];
foreach ($textLinks as $textLink) {
$textLink = str_replace('\\', '\\\\', $textLink);
$textLink = str_replace('\\\\\\', '\\\\', $textLink);
$decodedLink = json_decode($textLink, true);
if ($decodedLink !== null) {
$links[$decodedLink['title']] = $decodedLink['url'];
}
}
return $links;
}
How to reproduce the bug
When I install the package in my project and use it with AI powered
Package Version
1.0
PHP Version
8.2.14
Laravel Version
11.14
Which operating systems does with happen with?
Windows
Notes
No response
bestmomo
21st Jul 2024 @ 10:57
These messages aren't displayed: https://github.com/symfony/flex/blob/1.x/src/Configurator/DockerComposeConfigurator.php#L51
dunglas
7th Aug 2022 @ 09:33
Hi! If I use this package with my project I has a problem. My package.json has a "git dependency" like this:
{
"peerDependencies": {
"package": "git+ssh://[email protected]/team/project.git"
}
}
And npm-install-peers breaks.
JWo1F
18th Dec 2017 @ 08:52
Package
filament/forms
Package Version
v4
Laravel Version
v12
Livewire Version
v3
PHP Version
PHP 8.3
Problem description
Repeater form component
Validation of item fields not working when getting state from extraItemActions.
Note: it was working in filament v3.
Expected behavior
it should trigger the ui validation normally on the Repeater field before opening the action modal.
Steps to reproduce
- Within the Reproduction repository.
- Open Create User page
- Click on the options action of the first repeater item
Reproduction repository (issue will be closed if this is not valid)
https://github.com/Abdulmajeed-Jamaan/app-filament-issue-4.x
Relevant log output
Abdulmajeed-Jamaan
10th Dec 2025 @ 20:35
Package
filament/filament
Package Version
v4.3
Laravel Version
v12.41.1
Livewire Version
v3.7.1
PHP Version
PHP 8.4.15
Problem description
When declaring repeater inside repeater, it duplicate query for nested repeater, and when we add more, the duplicate query goes on..
Repeater::make('items')
->relationship()
->schema([
Repeater::make('details')->relationship(), // <--- duplicate queries on this repeater
]),
Expected behavior
No duplicate query
Steps to reproduce
- clone, install
- go to
Bookings, create new and notice the query load (laravel-debugbar) is prepared - Add more item on the repeater and inside repeater and check the query
NOTE: the reproduction repo is prepare for checking other bugs, so it maybe a little big, but this problem can be reproduced inside Bookings only
Reproduction repository (issue will be closed if this is not valid)
https://github.com/valpuia/fila-nested-repeater-duplicate-query
Relevant log output
valpuia
8th Dec 2025 @ 08:49
Description: I am using Flasher 2.0.1 in my Laravel 11 project and would like to know how to properly use the Flasher library in JavaScript. Additionally, I want to ensure that the JavaScript configuration is consistent with the settings defined in the flasher.php configuration file.
Details: Flasher Version: 2.0.1 Laravel Version: 11 Problem: Need guidance on using the Flasher library with JavaScript in a way that mirrors the configuration set in flasher.php.
raseldev99
16th Sep 2024 @ 04:50