ホームページ > バックエンド開発 > PHPチュートリアル > フィラメント: レコードの削除時に添付ファイルを削除する

フィラメント: レコードの削除時に添付ファイルを削除する

Mary-Kate Olsen
リリース: 2024-10-16 06:07:02
オリジナル
914 人が閲覧しました

Filament: Delete Attachments when Deleting a Record

Filament を使用すると、レコードに添付ファイルを追加できますが、レコードを削除しても添付ファイルは削除されません。

この問題を解決するには、2 つの選択肢があります:

モデルの削除イベントを聞く

モデルが削除されようとすると、削除イベントが発生します。このイベントをリッスンして、モデルが存在しなくなる前に添付ファイルを削除する機能をトリガーできます。

モデル クラス内に、ブートされたメソッドを追加して、新しいイベント リスナーをモデルに登録できます。

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 の削除アクションを変更する

もう 1 つのオプションは、削除アクションの動作を変更することです。

protected function getActions(): array
{
    return [
        Actions\DeleteAction::make()
            ->after(function (Project $project) {
                // delete single
                if ($project->thumbnail) {
                    Storage::disk('public')->delete($project->thumbnail);
                }
            })
    ];
}
ログイン後にコピー

このオプションは要件に合わせて使用​​できますが、イベント リスナーを追加すると、フィラメント アクションやアプリ内のコードの別の部分によって発生したとき、モデルが削除されたときに添付ファイルも削除されることに注意してください。

これは、選択すべきオプションを決定する可能性があるため、重要です。

以上がフィラメント: レコードの削除時に添付ファイルを削除するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート