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
另一個選項是更改刪除操作的行為。
protected function getActions(): array { return [ Actions\DeleteAction::make() ->after(function (Project $project) { // delete single if ($project->thumbnail) { Storage::disk('public')->delete($project->thumbnail); } }) ]; }
您可以使用更適合您要求的選項,但您應該記住,刪除模型時,無論何時由應用程式中的細絲操作或程式碼的其他部分發生,新增事件偵聽器都會刪除附件。
這很重要,因為可能會決定您應該選擇的任何選項。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3