简体   繁体   English

如何删除laravel中涉及图像的多条记录

[英]how to delete multiple records that involve images in laravel

Please guys any idea how to delete multiple records that involve images.请大家知道如何删除涉及图像的多个记录。 i do not know any approach that i can use.我不知道我可以使用的任何方法。 i have tried a lot.this is the what i have tried below.Pls help me guys i really need your help.Thanks in advance我已经尝试了很多。这是我在下面尝试过的。请帮助我,我真的需要你的帮助。提前谢谢

please this is the code below请这是下面的代码

public function multipleUserDelete(Request $request,$id, $post_image){

    if ($request->isMethod("post")) {
        $data=$request->all();   

        //$del_user = $request->del_user;
        // $ids=$del_user[];
        //foreach(session('posts') as $session){


        //foreach(session('products') as $postDelete){

        $postDeletes=Post::where(['id'=> $id])
                            ->where('post_image', $post_image)
                            ->get();

        foreach ($postDeletes as $postDelete) {
            # code...

            // $postDeletes=Post::where(['id'=> $id])->get();
    //}
            $large_image_paths='images/backend_image/admin_users/small/';

            $medium_image_paths='images/backend_image/admin_users/medium/';

            $small_image_paths='images/backend_image/admin_users/large/';

            //Delete Image permenently from product table begins 

            //Delete Large image if not exist

            if(file_exists($large_image_paths. $postDelete->post_image)){
                unlink($large_image_paths. $postDelete->post_image);    
            }

            //Delete Large image if not exist            
            if(file_exists($small_image_paths. $postDelete->post_image)){
                unlink($small_image_paths. $postDelete->post_image);    
            }

            //Delete Medium image if not exist
            if(file_exists($medium_image_paths. $postDelete->post_image)){
                unlink($medium_image_paths. $postDelete->post_image);    
            }
        }


        //$del_id=$request->input('del_feedback');

        Post::whereIn('id', $data['del_user'])->delete();

        return redirect()->back()->with("flash_message_success","you Successfully Deleted The Selected Users(s)");
    } 

Not tested, but I think something like this should work fine.未经测试,但我认为这样的事情应该可以正常工作。

$image_path = "/images/";  // Value is not URL but directory file path
Post::where(['id'=> $id])
        ->where(function($query){

             if(File::exists($image_path . $post_image)) {
                 File::delete($image_path . $post_image);
             }
              $query->where('post_image', $post_image)
          })
         ->delete();

In general, the path issue should probably be absolute.一般来说,路径问题应该是绝对的。

See How to delete file from public folder in laravel 5.1 I don't know in Laravel 6, but it should work.请参阅如何从 Laravel 5.1 中的公共文件夹中删除文件我在 Laravel 6 中不知道,但它应该可以工作。

ie using File :: delete ()即使用 File::delete()

Add the folder that contains your image to your config/filesystems.php files:将包含图像的文件夹添加到 config/filesystems.php 文件中:

'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => base_path('app'),
    ],
    //Above bit should already be there. So add this....  

    'some-image-path' => [
        'driver' => 'local',
        'root' => base_path("wherever/your/directory/is/from/root/"),
    ],

You would then use it like this:然后你会像这样使用它:

  $myImage = 'some-image.png'; 
  Storage::disk('some-image-path')->delete($myImage);
public function multipleUserDelete(Request $request,$id, $post_image){

    if ($request->isMethod("post")) {
        $data=$request->all();   

        $postDeletes=Post::where(['id'=> $id])
                            ->where('post_image', $post_image)
                            ->get();
        $img_array = array();
        foreach ($postDeletes as $postDelete) {
            $large_image_paths='images/backend_image/admin_users/small/';

            $medium_image_paths='images/backend_image/admin_users/medium/';

            $small_image_paths='images/backend_image/admin_users/large/';
            $img='';
            if(file_exists(public_path($large_image_paths. $postDelete->post_image))){
                $img = $large_image_paths. $postDelete->post_image;
            }

            if(file_exists(public_path($small_image_paths. $postDelete->post_image))){
                $img = $small_image_paths. $postDelete->post_image;
            }

            if(file_exists(public_path($medium_image_paths. $postDelete->post_image))){
                $img = $medium_image_paths. $postDelete->post_image;
            }

            array_push($img_array,$img);
        }

        \File::delete($img_array);
        Post::whereIn('id', $data['del_user'])->delete();

        return redirect()->back()->with("flash_message_success","you Successfully Deleted The Selected Users(s)");
    } 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM