Search code examples
phplaravellaravel-5.3delete-row

How i delete name of one image from name of images in array?


I have a Multiple images in array in row like:

["1.jpg","2.jpg"]

I need delete name of one image from name of images in array in db, this is my form to show and delete submit:

@foreach(json_decode($post->images ,true) as $images)
<div class="col-lg-2 col-md-2 col-sm-2">
    <div class="portfolio-box">
        <img src="public/img/offers/{{ $images }}" class="img-responsive"alt="">
        <div class="portfolio-box-caption">
            <div class="portfolio-box-caption-content">
                <form action="images/{{ $images }}/delete" method="get">

                    {!! csrf_field() !!}

                    <input type="submit" class="btn btn-danger" value="Delete">

                </form>
            </div>
        </div>
    </div>
</div>
@endforeach

and this is my Route:

    Route::get('images/{images}/delete','DashboardController@deleteimg');

what i do in Controller ??


Solution

  • Pass post id in form

    @foreach(json_decode($post->images ,true) as $images)
     <div class="col-lg-2 col-md-2 col-sm-2">
       <div class="portfolio-box">
        <img src="public/img/offers/{{ $images }}" class="img-responsive"alt="">
        <div class="portfolio-box-caption">
            <div class="portfolio-box-caption-content">
                <form action="images/{{ $images }}/delete" method="get">
    
                    {!! csrf_field() !!}
                    <input type="hidden"  name="post_id" value="{{$post->id}}"/>
                    <input type="submit" class="btn btn-danger" value="Delete">
    
                </form>
             </div>
            </div>
          </div>
         </div>
    @endforeach
    

    And in controller

    public function deleteimg($image,Request $req){
       $post=Post::find($req['post_id']);
       $images=json_decode($post->images);
       $_image=[];
       $_image[]=$image;
       $post->images=json_encode(array_values(array_diff($images,$_image)));
       $post->save();
       return redirect()->back();
    }
    

    OR

    public function deleteimg($image,Request $req){
       $post=Post::find($req['post_id']);
       $images=json_decode($post->images);
       unset($images[$image]);
       $post->images=json_encode(array_values(images));
       $post->save();
       return redirect()->back();
    }