」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Filament:刪除記錄時刪除附件

Filament:刪除記錄時刪除附件

發佈於2024-11-08
瀏覽:417

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);
                }
            })
    ];
}

您可以使用更適合您要求的選項,但您應該記住,刪除模型時,無論何時由應用程式中的細絲操作或程式碼的其他部分發生,新增事件偵聽器都會刪除附件。

這很重要,因為可能會決定您應該選擇的任何選項。

版本聲明 本文轉載於:https://dev.to/sertxudev/filament-delete-attachments-when-deleting-a-record-1jhl?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何解決 PHP 中 file_get_contents() 的 SSL 逾時和加密啟用錯誤?
    如何解決 PHP 中 file_get_contents() 的 SSL 逾時和加密啟用錯誤?
    解決了file_get_contents() 的SSL 逾時和加密啟用錯誤在PHP 中,當使用file_get_contents() 從HTTPS 頁面檢索內容時,可能會遇到與SSL 加密啟用相關的錯誤。此類錯誤之一是:Warning: file_get_contents(): SSL: crypt...
    程式設計 發佈於2024-11-08
  • 如何監控 Guzzle Http 用戶端 – PHP 快速提示
    如何監控 Guzzle Http 用戶端 – PHP 快速提示
    Guzzle 是一款流行的 PHP HTTP 客户端,可以轻松发送 HTTP 请求和创建 Web 服务库。最流行的 PHP 框架提供了内部 Http Client 服务,它们只是 Guzzle Http Client 的定制实现: Laravel Http 客户端 Symfony Http 客户端 ...
    程式設計 發佈於2024-11-08
  • 為什麼 Python 在方法中需要明確的「Self」參數?
    為什麼 Python 在方法中需要明確的「Self」參數?
    揭秘Python方法中的「Self」參數與某些程式語言不同,物件引用是用「this」關鍵字式定義的, Python 要求在方法定義中明確包含「self」參數。這種設計決策提出了一個問題:它是故意的還是實現限制的問題。 在 Python 中,「self」參數明確地建立了方法與其類別實例之間的關係。它提...
    程式設計 發佈於2024-11-08
  • 使用 Gin/Golang 時如何處理空請求主體:綁定與除錯技術指南
    使用 Gin/Golang 時如何處理空請求主體:綁定與除錯技術指南
    Gin/Golang 中請求正文為空使用Gin 處理POST 請求時,偶爾可能會遇到請求正文顯示為空的問題是空的。這可能會令人沮喪,尤其是當您希望從客戶端接收資料時。此問題的一個常見原因是嘗試直接列印正文。 Gin 將請求內文表示為介面類型 ReadCloser。但列印該介面的字串值並不會洩漏實際的...
    程式設計 發佈於2024-11-08
  • Python 列表理解
    Python 列表理解
    Python 最酷的事情之一是清單推導式如何讓在一行程式碼中建立和操作清單變得非常容易。列表理解是一種透過轉換和過濾現有清單中的元素來建立新清單的簡潔方法。這個特性是 Python 使程式碼更具可讀性和高效性的眾多方法之一,對於初學者來說是一個很好的學習工具。在這裡閱讀更多範例...... 奧利佛 ...
    程式設計 發佈於2024-11-08
  • 如何在 Gin 中組織路由:分組路由定義指南?
    如何在 Gin 中組織路由:分組路由定義指南?
    如何在 Gin 中組織路由為了避免路由定義使主文件混亂,您可以將路由分組到單獨的文件中。這種方法可以實現更好的程式碼組織和可維護性。 要建立嵌套路由分組,您可以將路由器變數儲存在結構體或全域變數中。然後,各個檔案可以將處理程序新增至此共用路由器實例。 範例實作routes.gopackage app...
    程式設計 發佈於2024-11-08
  • Leetcode鍊錶問題
    Leetcode鍊錶問題
    反向鍊錶(LeetCode #206) 難度:簡單 概念:迭代與遞歸方法。 合併兩個排序清單 (LeetCode #21) 難度:簡單 概念:鍊錶遍歷與合併技術。 從清單結束時刪除第 N 個節點 **(LeetCode #19) **難度:中等 概念:兩指針技術(慢指針和快指針)。 鍊錶循環...
    程式設計 發佈於2024-11-08
  • 如何在 C++ 容器中儲存異質物件:boost::any 或自訂實作?
    如何在 C++ 容器中儲存異質物件:boost::any 或自訂實作?
    在C 容器中儲存異質物件C 容器通常需要同質元素,這意味著它們只能保存單一類型的對象。但是,在某些情況下,您可能需要一個可以容納混合資料類型的容器。本文探討如何使用 boost::any 函式庫和自訂方法來實現此目的。 使用 boost::anyboost::any 是一個模板類別可以容納任何 C ...
    程式設計 發佈於2024-11-08
  • 使用 Pandas 掌握數據分析:從數據中釋放洞察力
    使用 Pandas 掌握數據分析:從數據中釋放洞察力
    資料分析是資料科學的核心,Python 的 Pandas 函式庫是一個強大的工具,可以讓這項任務變得更輕鬆、更有效率。無論您使用簡單的電子表格還是大型資料集,Pandas 都可以讓您像專業人士一樣靈活地操作、分析和視覺化資料。在本文中,我們將深入探討 Pandas 的基礎知識,涵蓋從資料操作到進階分...
    程式設計 發佈於2024-11-08
  • 使用 GitLab CI/CD 和 Terraform 實作 Lambda 以進行 SFTP 整合、Go 中的 S Databricks
    使用 GitLab CI/CD 和 Terraform 實作 Lambda 以進行 SFTP 整合、Go 中的 S Databricks
    通过 Databricks 中的流程自动化降低成本 我的客户需要降低在 Databricks 上运行的流程的成本。 Databricks 负责的功能之一是从各种 SFTP 收集文件,解压缩它们并将它们放入数据湖中。 自动化数据工作流程是现代数据工程的重要组成部分。在本文中,我们将探...
    程式設計 發佈於2024-11-08
  • 最佳免費開源圖示庫 4
    最佳免費開源圖示庫 4
    In 2024, finding the best free icon library can significantly enhance the visual appeal of your websites, apps, or digital projects. Whether you're a ...
    程式設計 發佈於2024-11-08
  • React Part 元件、State 和 Props 入門
    React Part 元件、State 和 Props 入門
    歡迎回到我們的 React.js 之旅!在上一篇文章中,我們介紹了 React 的基礎知識,強調了它作為建立動態使用者介面的函式庫的優勢。今天,我們將深入探討創建 React 應用程式所需的三個基本概念:元件、狀態和屬性。讓我們詳細探討這些概念! 什麼是 React 元件? Rea...
    程式設計 發佈於2024-11-08
  • 如何利用原生 ES6 Promises 有效地連結異步 jQuery 函數?
    如何利用原生 ES6 Promises 有效地連結異步 jQuery 函數?
    JavaScript 的互通性承諾實現非同步jQuery 函數的高效連結連結異步jQuery 函數時,通常需要避免jQuery 的內建函數Promises 功能並使用原生ES6 Promises 取代。這種互通性允許 jQuery 操作和您想要的 Promise 實現之間的無縫整合。 使用Nativ...
    程式設計 發佈於2024-11-08
  • 在 Python 中使用 ElementTree 的「find」和「findall」方法時如何忽略 XML 命名空間?
    在 Python 中使用 ElementTree 的「find」和「findall」方法時如何忽略 XML 命名空間?
    在ElementTree 的“find”和“findall”方法中忽略XML 命名空間使用ElementTree 模組解析和定位XML 文件中的元素時,命名空間會帶來複雜性。以下介紹如何在 Python 中使用「find」和「findall」方法時忽略命名空間。 當 XML 文件包含命名空間時,會導...
    程式設計 發佈於2024-11-08
  • Bitbucket 綜合指南:功能、整合和最佳實踐
    Bitbucket 綜合指南:功能、整合和最佳實踐
    Bitbucket简介 Bitbucket 是 Atlassian 旗下基于 Git 的源代码存储库托管服务,以其强大的集成能力和强大的协作功能而闻名。它适合各种规模的团队,提供可简化开发工作流程、提高生产力并确保安全代码管理的解决方案。无论您是小型团队还是大型企业的一部分,Bitbucket 都...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3