Filament를 사용하면 기록에 첨부 파일을 추가할 수 있지만 기록을 삭제할 때 첨부 파일이 삭제되지는 않습니다.
이 문제를 해결하기 위해 두 가지 대안이 있습니다.
모델이 삭제되려고 하면 삭제 이벤트가 발생합니다. 이 이벤트를 수신하여 모델이 더 이상 존재하지 않기 전에 모든 첨부 파일을 삭제하는 기능을 트리거할 수 있습니다.
모델 클래스 내부에 부팅 메서드를 추가하여 모델에 새 이벤트 리스너를 등록할 수 있습니다.
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); } }) ]; }
귀하의 요구 사항에 더 잘 맞는 옵션을 사용할 수 있지만 이벤트 리스너를 추가하면 앱의 필라멘트 작업이나 다른 코드 부분에 의해 모델이 삭제될 때마다 첨부 파일이 삭제된다는 점을 명심해야 합니다.
옵션을 선택해야 할 때마다 결정될 것이므로 이는 중요합니다.
위 내용은 필라멘트: 기록 삭제 시 첨부 파일 삭제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!