本文目录
一、软删除
软删除必须满足条件:
1.1、表中必须有一个软删除字段
1.2、模型中引入对应的操作(trait)实现多继承
1.3、模型中指定软删除的标识字段
原来的delete
删除就变成了软删除,不会删除真实数据。
1.4、创建删除控制器方法
// 删除用户操作
public function del(int $id) {
// 软删除
User::find($id) -> delete();
// 强制删除 在配置了软删除的时候,真实的删除操作
// User::find($id) -> forceDelete();
return ['status' => 0, 'msg' => '删除成功'];
}
1.5、增加删除按钮路由
// 用户删除操作
Route::get('user/del{id}', 'UserController@del') -> name('admin.user.del');
效果:
二、恢复用户
2.1 显示所有用户
withTrashed()显示所有的,包括已经进行了软删除的
效果:
2.2 修改现实模版
@if(auth() -> id() != $item -> id)
@if($item -> deleted_at != null)
<span class="label label-success radius">
<a href="{{route('admin.user.restore', ['id' => $item -> id])}}">恢复</a>
</span>
@else
<span class="label label-danger radius">
<a href="{{route('admin.user.del', ['id' => $item -> id])}}">删除</a>
</span>
@endif
@endif
2.3 恢复路由
// 删除还原
Route::get('user/restore{id}', 'UserController@restore') -> name('admin.user.restore');
2.4 控制器方法
// 恢复用户
public function restore(int $id) {
// 还原
User::onlyTrashed() -> where('id', $id) -> restore();
return redirect(route('admin.user.index')) -> with('success', '还原成功');
}
效果:
三、批量删除
1、获取ID
@if(auth() -> id() != $item ->id)
@if($item -> deleted_at == null)
<input type="checkbox" value="{{$item -> id}}" name="id[]">
@endif
@endif
<a href="javascript:;" onclick="deleteAll()" class="btn btn-danger radius">
<i class="Hui-iconfont"></i> 批量删除
</a>
// 生成一个token crsf
const _token = "{{csrf_token()}}";
// 全选删除
function deleteAll() {
//询问框
layer.confirm('确认删除', {
btn: ['确认', '取消'] //按钮
}, function() {
// 选中的用户
let ids = $('input[name = "id[]"]:checked')
let id = []
$.each(ids, (key, value) => {
id.push($(value).val());
})
// console.log(id)
if (id.length > 0) {
// 发起ajax
$.ajax({
url: "{{route('admin.user.delall')}}",
data: {
id,
_token
},
type: 'DELETE'
}).then((res) => {
console.log(res)
if (res.status == 1) {
layer.msg(res.msg, {
time: 2000,
icon: 1
}, () => {
location.reload();
})
}
})
}
});
}
2、全选删除路由
// 全选删除
Route::delete('user/delall', 'UserController@delall') -> name('admin.user.delall');
3、全选控制器方法
// 全选删除用户
public function delall (Request $request) {
$ids = $request -> get('id');
User::destroy($ids);
return ['status' => 1, 'msg' => '全选删除成功'];
}
在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。