【发布时间】:2020-03-16 17:33:12
【问题描述】:
当我选中多个复选框以删除多行时,它会删除带有图像 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'];
}
EmployeeController 中的函数:
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);
}
}
API 中的代码:
Route::delete('multipledelete','API\EmployeeController@multipledelete');
Employee.vue 中用于删除操作的代码是:
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>
我试过这段代码,但 id 不起作用。
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);
}
}
【问题讨论】:
标签: javascript mysql laravel vue.js