0

I want to update and delete multiple images on laravel, the old images will be automatically deleted from storage after the update. And when I click to delete all images and other data are deleted too

Controller:

public function index(Request $request){
    if($request->has('search')){
        $data = rekap::where('customer','LIKE','%' .$request->search. '%')->paginate(5);
    }else{
        $data = rekap::paginate(5);
    }
    return view('rekap')->with([
            'data' => $data,
    ]);
}

public function tambah_rekap(){
    return view ('tambah_rekap');
}

public function insert_rekap(Request $request){
    // dd($request->all());
    $data = $request->validate([
        'customer'=>'required',
        'vessel'=>'required',
        'scopejob'=>'required',
        'pergantian_sparepart'=>'required',
        'teknisi'=>'required',
        'tahun'=>'required',
        'keterangan'=>'required'
    ]);
    $new_data= rekap::create($data);
    if($request->has('images')){
        foreach($request->file('images')as $image){
            $imageName = $data['customer'].'-image-'.time().rand(1,1000).'.'.$image->extension();
            $image->move(public_path('data_images'),$imageName);
            Image_rekap::create([
                'rekap_id'=>$new_data->id,
                'image'=>$imageName
            ]);
        }
    }
    return redirect()->route('rekap')->with('success','Data Berhasil Ditambahkan');
}

public function images($id){
    $data = rekap::find($id);
    if(!$data) abort(404);
    $images = $data->images;
    return view ('image_rekap',compact('data','images'));
}

public function show_rekap($id){
    $data = rekap::find($id);
    return view('show_rekap', compact('data'));
}

public function update_rekap(Request $request,$id){
    $data = rekap::find($id);
    $data->update($request->all());
    return redirect()->route('rekap')->with('success','Data Berhasil di Update');
}

public function delete_rekap($id){
    $data = rekap::find($id);
    $data->delete();
    return redirect()->route('rekap')->with('success','Data berhasil dihapus');
}

and this is my HTML

                <tbody>
                @foreach ($data as $row)
              <tr>
                <td>{{ $row->customer}}</td>
                <td>{{ $row->vessel}}</td>
                <td>{{ $row->scopejob}}</td>
                <td>{{ $row->pergantian_sparepart}}</td>
                <td>{{ $row->teknisi}}</td>
                <td>{{ $row->tahun}}</td>
                <td>{{ $row->keterangan}}</td>
                <td>{{ $row->images->count()}}</td>
                <td>
                  <a href={{route('data.images',$row->id)}} type="button" class="btn btn-info">INFO</a>
                  <a href="/show_rekap/{{ $row->id}}" class="btn btn-warning">EDIT</a>
                  <a href="#" class="btn btn-danger delete" data-id="{{ $row->id}}" data-customer="{{ $row->customer}}" >DELETE</a>
                </td>
              </tr>
              @endforeach
            </tbody>

And this is my view:

enter image description here

What steps can I take to achieve updating new images in my laravel application?

2
  • Update and delete old images should be in the same function. Before update you should keep a "duplicate" of old images so you may delete them.
    – nikistag
    Commented Jun 11, 2022 at 6:06
  • show me how (code) @nikistag Commented Jun 11, 2022 at 8:48

0

Browse other questions tagged or ask your own question.