Javascript 从数据库中删除文件夹时,如何从文件夹中删除多张照片?

Javascript 从数据库中删除文件夹时,如何从文件夹中删除多张照片?,javascript,mysql,laravel,vue.js,Javascript,Mysql,Laravel,Vue.js,当我选中删除多行的多个复选框时,它会删除带有图像url表单数据库的记录,但不会从公用文件夹中删除图像。如果有人能帮我的话 对于删除单个记录,下面的代码非常有效,它可以删除记录表单数据库,还可以从文件夹中删除照片。 public function destroy($id) { // // $this->authorize('isAdmin'); $Employee = Employee::findOrFail($id);

当我选中删除多行的多个复选框时,它会删除带有图像url表单数据库的记录,但不会从公用文件夹中删除图像。如果有人能帮我的话

对于删除单个记录,下面的代码非常有效,它可以删除记录表单数据库,还可以从文件夹中删除照片。

public function destroy($id)
    {
        //

        // $this->authorize('isAdmin');
        $Employee = Employee::findOrFail($id);
         $currentPhoto = $Employee->photo;
         $currentdatePhoto = $Employee->afghanidatephoto;
        $EmployeePhoto = (public_path('img/emp/').$currentPhoto);
         $EmployeedatePhoto = (public_path('img/date/').$currentdatePhoto);
        if(file_exists($EmployeedatePhoto)){
            @unlink($EmployeedatePhoto);

        }
       if(file_exists($EmployeePhoto))
        {
             @unlink($EmployeePhoto);

        }
        $Employee->delete();
        return ['message'=>'Employee Deleted Successfully'];
    }
public function multipledelete(Request $request)
            {
                try 
                    {  
                    $Employee = Employee::whereIn('id', $request->id)->delete(); 
                    $currentPhoto = $Employee->photo;
         $currentdatePhoto = $Employee->afghanidatephoto;
        $EmployeePhoto = (public_path('img/emp/').$currentPhoto);
         $EmployeedatePhoto = (public_path('img/date/').$currentdatePhoto);
        if(file_exists($EmployeedatePhoto)){
            @unlink($EmployeedatePhoto);

        }
       if(file_exists($EmployeePhoto))
        {
             @unlink($EmployeePhoto);

        }
        $Employee->delete();
                        return response()->json('data deleted');
                    }

                    catch (Exception $e) {
                        return response()->json($e->getMessage(), 500);
                    }
             }
我的员工控制器中的函数:

public function multipledelete(Request $request)
            {
                try 
                    {  
                    Employee::whereIn('id', $request->id)->delete(); 

                        return response()->json('data deleted');
                    }

                    catch (Exception $e) {
                        return response()->json($e->getMessage(), 500);
                    }
             }
Route::delete('multipledelete','API\EmployeeController@multipledelete');
delt() {
      var chekboxs = document.getElementById("chekboxs");
      if (chekboxs.checked) {
        swal
          .fire({
            title: "Are you sure you want to delete the selected records?",
            text: "You won't be able to revert this!",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#3085d6",
            cancelButtonColor: "#d33",
            confirmButtonText: "Yes, delete it!"
          })
          .then(result => {
            //Send request to the server
            if (result.value) {
              axios
                .delete("api/multipledelete", {
                  params: { id: this.checkedRows }
                })
                .then(() => {
                  toast.fire({
                    type: "success",
                    title: "Your Selected Employees are successfully deleted!"
                  });
                  Fire.$emit("refreshPage");
                })
                .catch(e => {
                  console.log(e);
                });
            }
          });
      } else {
        toast.fire({
          type: "warning",
          title: "You didn't check anything to be deleted please check it!"
        });
      }
    }
<div class="custom-control custom-checkbox">
                      <input
                        class="form-check-input"
                        type="checkbox"
                        :value="employee.id"
                        v-model="checkedRows"
                        id="chekboxs"
                      />
                      <label class="form-check-label"></label>
                    </div>
<div class="col-md-2" style="margin-bottom:-29px;">
                    <button class="btn btn-danger" @click="delt">
                      <i class="fas fa-user-minus"></i>
                      Delete Multiple
                      <!-- <grid-loader v-show="seen" :loading="loading" :color="color" :size="size"></grid-loader> -->
                    </button>
                  </div>
API中的代码:

public function multipledelete(Request $request)
            {
                try 
                    {  
                    Employee::whereIn('id', $request->id)->delete(); 

                        return response()->json('data deleted');
                    }

                    catch (Exception $e) {
                        return response()->json($e->getMessage(), 500);
                    }
             }
Route::delete('multipledelete','API\EmployeeController@multipledelete');
delt() {
      var chekboxs = document.getElementById("chekboxs");
      if (chekboxs.checked) {
        swal
          .fire({
            title: "Are you sure you want to delete the selected records?",
            text: "You won't be able to revert this!",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#3085d6",
            cancelButtonColor: "#d33",
            confirmButtonText: "Yes, delete it!"
          })
          .then(result => {
            //Send request to the server
            if (result.value) {
              axios
                .delete("api/multipledelete", {
                  params: { id: this.checkedRows }
                })
                .then(() => {
                  toast.fire({
                    type: "success",
                    title: "Your Selected Employees are successfully deleted!"
                  });
                  Fire.$emit("refreshPage");
                })
                .catch(e => {
                  console.log(e);
                });
            }
          });
      } else {
        toast.fire({
          type: "warning",
          title: "You didn't check anything to be deleted please check it!"
        });
      }
    }
<div class="custom-control custom-checkbox">
                      <input
                        class="form-check-input"
                        type="checkbox"
                        :value="employee.id"
                        v-model="checkedRows"
                        id="chekboxs"
                      />
                      <label class="form-check-label"></label>
                    </div>
<div class="col-md-2" style="margin-bottom:-29px;">
                    <button class="btn btn-danger" @click="delt">
                      <i class="fas fa-user-minus"></i>
                      Delete Multiple
                      <!-- <grid-loader v-show="seen" :loading="loading" :color="color" :size="size"></grid-loader> -->
                    </button>
                  </div>
Employee.vue中删除操作的Cod为:

public function multipledelete(Request $request)
            {
                try 
                    {  
                    Employee::whereIn('id', $request->id)->delete(); 

                        return response()->json('data deleted');
                    }

                    catch (Exception $e) {
                        return response()->json($e->getMessage(), 500);
                    }
             }
Route::delete('multipledelete','API\EmployeeController@multipledelete');
delt() {
      var chekboxs = document.getElementById("chekboxs");
      if (chekboxs.checked) {
        swal
          .fire({
            title: "Are you sure you want to delete the selected records?",
            text: "You won't be able to revert this!",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#3085d6",
            cancelButtonColor: "#d33",
            confirmButtonText: "Yes, delete it!"
          })
          .then(result => {
            //Send request to the server
            if (result.value) {
              axios
                .delete("api/multipledelete", {
                  params: { id: this.checkedRows }
                })
                .then(() => {
                  toast.fire({
                    type: "success",
                    title: "Your Selected Employees are successfully deleted!"
                  });
                  Fire.$emit("refreshPage");
                })
                .catch(e => {
                  console.log(e);
                });
            }
          });
      } else {
        toast.fire({
          type: "warning",
          title: "You didn't check anything to be deleted please check it!"
        });
      }
    }
<div class="custom-control custom-checkbox">
                      <input
                        class="form-check-input"
                        type="checkbox"
                        :value="employee.id"
                        v-model="checkedRows"
                        id="chekboxs"
                      />
                      <label class="form-check-label"></label>
                    </div>
<div class="col-md-2" style="margin-bottom:-29px;">
                    <button class="btn btn-danger" @click="delt">
                      <i class="fas fa-user-minus"></i>
                      Delete Multiple
                      <!-- <grid-loader v-show="seen" :loading="loading" :color="color" :size="size"></grid-loader> -->
                    </button>
                  </div>
复选框为:

public function multipledelete(Request $request)
            {
                try 
                    {  
                    Employee::whereIn('id', $request->id)->delete(); 

                        return response()->json('data deleted');
                    }

                    catch (Exception $e) {
                        return response()->json($e->getMessage(), 500);
                    }
             }
Route::delete('multipledelete','API\EmployeeController@multipledelete');
delt() {
      var chekboxs = document.getElementById("chekboxs");
      if (chekboxs.checked) {
        swal
          .fire({
            title: "Are you sure you want to delete the selected records?",
            text: "You won't be able to revert this!",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#3085d6",
            cancelButtonColor: "#d33",
            confirmButtonText: "Yes, delete it!"
          })
          .then(result => {
            //Send request to the server
            if (result.value) {
              axios
                .delete("api/multipledelete", {
                  params: { id: this.checkedRows }
                })
                .then(() => {
                  toast.fire({
                    type: "success",
                    title: "Your Selected Employees are successfully deleted!"
                  });
                  Fire.$emit("refreshPage");
                })
                .catch(e => {
                  console.log(e);
                });
            }
          });
      } else {
        toast.fire({
          type: "warning",
          title: "You didn't check anything to be deleted please check it!"
        });
      }
    }
<div class="custom-control custom-checkbox">
                      <input
                        class="form-check-input"
                        type="checkbox"
                        :value="employee.id"
                        v-model="checkedRows"
                        id="chekboxs"
                      />
                      <label class="form-check-label"></label>
                    </div>
<div class="col-md-2" style="margin-bottom:-29px;">
                    <button class="btn btn-danger" @click="delt">
                      <i class="fas fa-user-minus"></i>
                      Delete Multiple
                      <!-- <grid-loader v-show="seen" :loading="loading" :color="color" :size="size"></grid-loader> -->
                    </button>
                  </div>

考虑到您当前的代码,最简单的方法是简单地循环遍历员工并根据需要删除:

$employees=Employee::其中('id',$request->id)->get();
foreach($employees作为$employees){
$currentPhoto=$employee->photo;
$currentdatePhoto=$employee->afghanidatephoto;
$employeePhoto=(公共路径('img/emp/')。$currentPhoto);
$employeedatePhoto=(公共路径('img/date/')。$currentdatePhoto);
如果(文件_存在($employeedatePhoto)){
@取消链接($employeedatePhoto);
}
如果(文件_存在($employeePhoto)){
@取消链接($employeePhoto);
}
$employee->delete();
}
您可以将
foreach()
包装在
try{…}catch{…}
块中

您的代码出现问题的原因如下:

$Employee = Employee::whereIn('id', $request->id)->delete(); 
通过使用
->delete()
完成该查询,您将删除与ID匹配的记录。接下来,尝试对
$Employee
执行操作将不起作用,因为
->delete()
不会返回
对象(我相信它返回的是布尔值,
true
),所以
$Employee->{…}
是一个错误

考虑到所有这些,您应该能够查询、循环和删除您的员工及其图像