2016-12-12 17 views
0

に異なるフォルダの画像を削除します。 。バナーを削除したときの投稿に関連する画像(featured_imageとbanner)を削除したいは、私が<strong>公共/画像featured_image <strong>(パブリック/画像/ featured_image)</strong>、<strong>バナー(パブリック/画像/バナー)</strong>のような</strong>内の異なるサブフォルダ内の記事の画像を保存したlaravel

これは私がこれに関連する記事や画像を削除するには、これをしようとしているfilesystem.php

'local' => [ 
    'driver' => 'local', 
    'root' => public_path('images/'), 
], 

の私の設定です:

public function destroy($id) 
{ 
    // 
    $tour = Tour::find($id); 
    $tour->country()->detach(); 
    Storage::delete('featured_image/$tour->featured_image'); 
    Storage::delete('banner/$tour->banner'); 
    $tour->delete(); 

    Session::flash('success', 'The tour is sucessfully deleted.'); 
    return redirect()->route('tours.index'); 
} 

ポストが正常に削除されますが、イメージはから削除されませんフォルダ。解決策を提案してください。

+0

タイプミスである可能性があります。 'delete'関数呼び出し中の' $ tour'変数は変数として解釈されていません:http://stackoverflow.com/a/3446245/534862 –

+0

'Storage :: delete( 'featured_image'/$ tour- > featured_image); Storage :: delete( 'banner'/$ tour-> banner); 'エラーをゼロで区切ることはできません。 –

+0

"ゼロ除算"この方法では2つの文字列の除算を行うためです。文字列に数値が含まれていない場合、文字列は0に変換されます。 –

答えて

0

それはそれが動作しない場合は...あなたも行うことができます

Storage::delete('images/featured_image/' . $tour->featured_image); 
Storage::delete('images/banner/' . $tour->banner); 

でなければなりません。

$images = [ 
    'featured_image' => public_path('images/featured_image/' . $tour->featured_image), 
    'banner_image' => public_path('images/banner/' . $tour->banner), 
]; 

foreach($images as $image) { 
    if(file_exists($image)) { 
    unlink($image); 
    } 
} 
+0

上記以外のものは機能しませんでした。最初のものはリンク解除の問題を返し、2番目のものは予期せぬエラーを返しました。 '' featured_image '=> public_path(' featured_image/'。$ tour-> featured_image); 'File:delete()メソッドを使って作業しています。 –

+0

とにかく助けてくれてありがとう –

+0

@ZacharyDaleエラーは '。'ではなく ';' (セミコロン)。私のコードを編集しました。しかし、これはうまくいくはずです。また、私はファイルに間違ったパスを与えていたことに気づいた。私の答えを更新してください。 – prateekkathal

0

私はFile:delete();メソッドを使用してこれを実現しました。

public function destroy($id) 
{ 

    $tour = Tour::find($id); 
    $tour->country()->detach(); 
    File::delete(public_path('/images/featured_image/' . $tour->featured_image)); 
    File::delete(public_path('/images/banner/' . $tour->banner)); 
    $tour->delete(); 

    Session::flash('success', 'The tour is sucessfully deleted.'); 
    return redirect()->route('tours.index'); 
} 
関連する問題