2016-07-25 97 views
1

任何人都可以告诉我如何做到这一点?当我删除相册时,我想从服务器上删除所有上传的文件,删除关系并从数据库中删除照片。删除文件工作(但如果有更好的方式来做到这一点,通过各种手段,赐教):Laravel多态关系分离和删除

foreach($album->photos as $photo) 
{ 
    File::delete($photo->path); 
    File::delete($photo->thumbnail_path); 
} 

但我的主要问题是这样的。我想分离相册和照片之间的关系,并在删除实际文件后从数据库中删除照片。但我只能使用detach删除关系,或者使用delete删除数据库中的照片。无论我第一次使用哪一个作品,都是因为之后关系不存在或照片不见了,当然。

我该怎么做?有没有简单的方法来实现这一点?

编辑:

做,现在这样的权利,好做法还是有更好的办法?

public function delete(Album $album) 
{ 
    $ids = array(); 

    foreach($album->photos as $photo) 
    { 
     File::delete($photo->path); 
     File::delete($photo->thumbnail_path); 

     $ids[] = $photo->id; 
    } 

    $album->photos()->detach(); 

    Photo::whereIn('id',$ids)->delete(); 

    $album->delete(); 

    flash()->success('Album deleted'); 

    return back(); 
} 
+0

试试这个\文件::删除($文件); –

回答

1

当让你只能说ON DELETE CASCADE迁移,基本上将删除所有连接的照片被删除的专辑

+0

谢谢,我确实想这样做,但我想我必须将它链接到一些外国身份证。但显然情况并非如此,我很傻。 – Hardist