Introduction
Filament includes an action that is able to force-delete soft-deleted Eloquent records. When the trigger button is clicked, a modal asks the user for confirmation. You may use it like so:Filament\Actions\ForceDeleteBulkAction:
Redirecting after force-deleting
You may set up a custom redirect when the form is submitted using thesuccessRedirectUrl() method:
Customizing the force-delete notification
When the record is successfully force-deleted, a notification is dispatched to the user, which indicates the success of their action. To customize the title of this notification, use thesuccessNotificationTitle() method:
successNotification() method:
successNotification(null) method:
Lifecycle hooks
You can use thebefore() and after() methods to execute code before and after a record is force-deleted:
Improving the performance of force-delete bulk actions
By default, theForceDeleteBulkAction will load all Eloquent records into memory, before looping over them and deleting them one by one.
If you are deleting a large number of records, you may want to use the chunkSelectedRecords() method to fetch a smaller number of records at a time. This will reduce the memory usage of your application:
- To allow individual records in the collection to be authorized with a model policy before deletion (using
authorizeIndividualRecords('forceDelete'), for example). - To ensure that model events are run when deleting records, such as the
forceDeletingandforceDeletedevents in a model observer.
fetchSelectedRecords(false) method, which will not fetch the records into memory before deleting them, and instead will delete them in a single query: