我想通过数据库ID从服务器中删除文件。 我试图在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循环也能工作,放置echo并返回,我看到foreach循环正在工作,但只删除了第一个文件。
答案 0 :(得分:0)
我已经解决了。我在File :: delete()
中使用了数组答案 1 :(得分:0)
只需尝试下面的代码
(案例A)用数字0,1,2 ..
索引的用户字段$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();
//(案例B)用键索引的用户字段
$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();
案例c
$ ids = array(' 0' => 1,' 1' => 2);
DB ::表('用户') - >其中(' ID',$ IDS) - >删除();