2016-09-23 34 views
0

我一直在閱讀關於刪除媒體的Laravel-Mediable docsLaravel-Mediable - 刪除媒體連同文件

但是,我對如何在不使用查詢構建器的情況下刪除特定媒體及其文件一事感到困惑。根據文檔,

注意:查詢生成器上的delete()方法不會刪除關聯的文件。由於級聯外鍵,它仍然會清除關係。

回答

0

作者laravel mediable在這裏。

原因是當調用可修改模型的delete()方法時,我們能夠將該行爲從hook中清理出來。但是,調用查詢構建器的delete()方法時,只需在數據庫上運行DELETE FROM ... SQL查詢,而不通知應用程序的任何其他部分。

刪除匹配查詢的模型及其文件的最簡單方法是首先執行選擇查詢,然後逐個刪除模型。

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

當然,這會導致N + 1個查詢。我會記下在下一個版本的todo列表中添加一個更好的批量刪除方法。