laravel软删除和恢复删除用户

一、软删除

软删除必须满足条件:

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">&#xe6e2;</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的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你华还是你华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值