首页  >  文章  >  后端开发  >  Filament:删除记录时删除附件

Filament:删除记录时删除附件

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-16 06:07:02785浏览

Filament: Delete Attachments when Deleting a Record

Filament 允许您向记录添加附件,但在删除记录时不会删除它们。

为了解决这个问题,我们有两种选择:

监听模型删除事件

当模型即将被删除时,它会触发删除事件。我们可以监听此事件来触发负责在模型不再存在之前删除任何附件的功能。

在模型类中,我们可以添加 booted 方法来向模型注册新的事件侦听器。

class Project extends Model
{
    protected $fillable = [
        'title', 'slug', 'repository', 'description', 'thumbnail',
    ];

    /**
     * The "booted" method of the model.
     */
    protected static function booted(): void
    {
        static::deleting(function ($project) {
            Storage::disk('public')->delete($project->thumbnail);
        });
    }
}

此代码将在删除模型之前删除缩略图附件。

您可以在 Laravel 文档中阅读更多相关内容 https://laravel.com/docs/11.x/eloquent#events-using-closures

修改Filament的删除动作

另一个选项是更改删除操作的行为。

protected function getActions(): array
{
    return [
        Actions\DeleteAction::make()
            ->after(function (Project $project) {
                // delete single
                if ($project->thumbnail) {
                    Storage::disk('public')->delete($project->thumbnail);
                }
            })
    ];
}

您可以使用更适合您要求的选项,但您应该记住,无论何时由应用程序中的细丝操作或代码的其他部分发生,添加事件侦听器都会在您的模型被删除时删除附件。

这很重要,因为可能会决定您应该选择的任何选项。

以上是Filament:删除记录时删除附件的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn