如何从Laravel 5.3上的存储中删除Laravel文件

时间:2017-05-20 20:08:41

标签: php laravel-5.3

我编写了下面的代码来从DB和存储中删除文件。问题是只删除db记录并保留存储文件。没有任何错误或任何事情发生。看起来只是跳过了存储代码中的删除。

public function destroy($id)
{           
    $delete = CompanyDocument::find($id);
    $filepath = ('/storage/app/documents/companies/'.$delete->document);
    Storage::delete($filepath); //delete from storage

    $delete->delete(); //delete from DB

    return back();
}

2 个答案:

答案 0 :(得分:0)

这是最终的解决方案。

$delete = CompanyDocument::find($id);       
    Storage::delete('documents/companies'.'/'.$delete->document); //delete from storage
    $delete->delete(); //delete from DB

答案 1 :(得分:0)

不是每次都从控制器手动删除存储的文档,而是挂钩Laravel's Model Events

CompanyDocument课程中,您应该覆盖boot方法并听取删除。

<强> CompanyDocument

class CompanyDocument extends Model {
    protected static function boot()
    {
        parent::boot(); 

        static::deleting(function($deleted) {
            Storage::delete("documents/companies/{$deleted->document}");
        });
    }
}

<强>控制器

public function destroy(CompanyDocument $document)
{           
    $document->delete();
    return back();
}