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); } }) ]; }
您可以使用更適合您要求的選項,但您應該記住,無論何時由應用程式中的細絲操作或程式碼的其他部分發生,新增事件偵聽器都會在您的模型被刪除時刪除附件。
這很重要,因為可能會決定您應該選擇的任何選項。
以上是Filament:刪除記錄時刪除附件的詳細內容。更多資訊請關注PHP中文網其他相關文章!