Laravel-Mediable - 与文件一起删除媒体

时间:2016-09-23 07:36:10

标签: php laravel

我一直在阅读关于删除媒体的Laravel-Mediable docs

但是,我对如何删除特定媒体及其文件而不使用查询构建器感到有些困惑。根据文档,

  

注意:查询构建器上的delete()方法不会删除关联的文件。由于级联外键,它仍然会清除关系。

1 个答案:

答案 0 :(得分:0)

laravel-mediable的作者。

这样做的原因是,当调用可用模型的delete()方法时,我们能够hook进入该行为以从磁盘清理文件。但是,当调用查询构建器的delete()方法时,它只是在数据库上运行DELETE FROM ... SQL查询而不通知应用程序的任何其他部分。

删除与查询匹配的模型及其文件的最简单方法是先执行选择查询,然后逐个删除模型。

$results = Media::where(...)->get();
$results->each(function($media) {
    $media->delete();
});

当然,这会产生N + 1个查询。我将注意为下一版本的待办事项列表添加更好的批量删除方法。