2016-07-19 9 views
0

データベースからファイルを削除したいと思います。 これをforeachループで実行しようとしています。 単一ファイルの削除は問題ありませんが、ユーザーが複数のファイルを送信すると(チェックボックスで) 私のループは最初だけ削除します。あなたが見ることができるようにLaravel、foreachで複数のファイルを削除しています

public function postSil(Request $request) 
{ 
    $ids = $request->input('sil'); 
    foreach($ids as $id) 
    { 
     $file = File::find($id)->first(); 
     $path = public_path().'/rea-files/'.$file->rea_number.'/'.$file->file_name; 
     \File::delete($path); 
     // echo 'id'; 



    } 
    //return 1; 
    File::destroy($ids); //this is model file. 
    return redirect()->back(); 
} 

、私は、foreachループが同様に動作するかどうか、試してみましたエコーを配置し、戻り、私はforeachループが動作だけで最初のファイルを削除している参照してください。

+0

ファイルへのパスがforeachループのすべての反復で正しいことを確認しましたか? –

+0

以下のようにいくつかのチェックを行います。if(!\ File :: exists($ path)){dd($ path); } '指定されたパスにファイルがない場合、パスを出力します –

答えて

0

私は解決しました。私は、ファイルに配列を使用::)(

0

を削除するだけで、コードの下にしようと

番号0,1,2でインデックスさ

(ケースA)ユーザフィールド..

$users_to_delete = array(
    '0'=> array('1','Frank','Smith','Whatever'), 
    '1'=> array('5','John','Johnson','Whateverelse'), 
); 

$ids_to_delete = array_map(function($item){ return $item[0]; }, $users_to_delete); 

DB::table('users')->whereIn('id', $ids_to_delete)->delete(); 

/

cをキー

$users_to_delete = array(
    '0'=> array('id'=>'1','name'=>'Frank','surname'=>'Smith','title'=>'Whatever'), 

    '1'=> array('id'=>'5','name'=>'John','surname'=>'Johnson','title'=>'Whateverelse'), 
); 

$ids_to_delete = array_map(function($item){ return $item['id']; }, $users_to_delete); 

DB::table('users')->whereIn('id', $ids_to_delete)->delete(); 

ケースによってインデックス付け/(ケースB)ユーザフィールド

$ ids = array( '0' => 1、 '1' => 2); 012(ID、$ ids) - > delete();

DB :: table( 'users') - >

関連する問題