2016-07-25 67 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