2017-12-20 16 views
-2

データベースから製品を削除した後でファイルを削除しようとしていますが、エラーが表示され、解決策が見つかりません。ファイルの削除エラー

メンバ関数への呼び出しを削除()はnullに

public function supprod($id,Request $request) 
{ 
    $produits=Produit::find($id); 
    $produits->delete(); // <-- error on this line 
    $filename=(string)$document->nom; 
    Storage::disk('fichier')->delete($filename); 
    return redirect()->back(); 
    } 

Image of the problem

+3

implicit model bindingセクションで

詳細 'find'は' null'なのでを返すことができます...その非常に単純な、それ 'id' ...ドキュメント内のすべてのとは' Produit'はありません – lagbox

+0

使用しているIDの商品は存在しません。 'find($ id)'の代わりに 'findOrFail($ id)'を使うことをお勧めします。これはモデルが見つからないときに 'ModelNotFoundException'を投げて404になるためです。 – fubar

+0

それが働いたが、まだ保存フォルダに格納されていた画像は、私は、これは動作しませんでしたし、それはエラーが ストレージ::ディスク(「fichier」)は、この行であることを私に示して –

答えて

0

これは、あなたが本当に聞かせなければならない記録この機能$produits=Produit::find($id); この使用$produits=Produit::where('id',$id)->first();

0

をチェックしていますLaravelはあなたのために仕事をします。

にあなたの行動を変更します。

public function supprod(Produit $id, Request $request) { 
     $filename=(string)$id->nom; 
     Storage::disk('fichier')->delete($filename); 
     $id->delete(); 
     return redirect()->back(); 
} 

これは、フレームワークは、適切なモデルを見つける作るか、それが存在しない場合は、404エラーをスローします。ドキュメント

+0

それを削除しようとしていながら、 - > delete($ filename); 彼は 'fichier'を認識しませんでした –

+0

あなたのコードからコピーしました。 'fichier'というディスクを設定したとしますか? – apokryfos

+0

私はそうではありませんでした。多分これは私のせいです。 私はこの製品ラインアップを私の製品コントローラに追加しました $ url = Storage :: url( '$ filename');削除コントローラ –