任务34:管理员软删除
Posted pensive
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了任务34:管理员软删除相关的知识,希望对你有一定的参考价值。
1,数据的删除包括【物理删除】和【软删除】2种,实际工作中以软删除比较多,类似 windows 上的回收站的功能。
找到 esourcesviewsAdminUserindex.blade.php 管理员列表页的 删除 按钮,编辑 超链如下
<a href="#" onclick="bootbox_confirm(‘{{route(‘admin.user.delete‘,array(‘id‘=>$user[‘id‘]))}}‘)" class="btn btn-danger btn-sm shiny"> <i class="fa fa-trash-o"></i> 删除 </a>
其中 JS 的 bootbox_confirm() 方法是要在 esourcesviewsAdminUsermain.blade.php 中引用 bootbox.js 和定义 bootbox_confirm() 如下所示
代码如下:
<script src="{{asset(‘static‘)}}/admin/style/bootbox.js"></script> <script> function bootbox_confirm(n){ bootbox.confirm("<i class="fa fa-warning" style="font-size:30px;color:#d73d32;"></i> 确定删除么?", function (result) { if (result) { window.location.href = n; } }); }; </script>
然后,浏览器访问 http://laravel.pensive.top/admin/users 随机点击 用户列表中 的 删除按钮 ,界面 效果如下
2, AppHttpControllersAdminUserController.php 修改 delete() 方法
public function delete(Request $request,int $id){ $del = User::destroy($id); if($del){ return redirect()->back()->with(‘success-msg‘,‘删除用户成功!‘); }else{ return redirect()->back()->with(‘danger-msg‘,‘删除用户失败!‘); } }
至此,已可以 测试 物理删除,没问题了的。
3,下面继续完善成【软删除】。
databasemigrations2020_05_02_111103_create_users_table.php 修改 up() 方法 增加
$table->softDeletes();
如下图所示位置:
4, 命令行 执行命令
php artisan migrate:refresh --seed
如下图,会重新 生成用户数据表和模拟数据,并多了一个 deleted_at 的时间字段【注:所谓软删除就是删除操作时在这个字段写入删除的时间,而要删除的记录物理上是没有被删除的,网页应用是通过这个字段来判断是否删除】
新生成的用户表如下所示:
5,在 AppModelsAdminUser.php 改为
<?php namespace AppModelsAdmin; use IlluminateDatabaseEloquentModel; use IlluminateDatabaseEloquentSoftDeletes; use IlluminateFoundationAuthuser as Authorization; class User extends Authorization { use SoftDeletes; protected $dates = [‘delete_at‘]; protected $guarded = []; //把不能往数据表添加的字段设为空,如:@crsf 创建的token隐藏字段 }
6,浏览器 访问 http://laravel.pensive.top/admin/users 测试随机删除操作ID 为8 和 9 的用户后,正常操作成功下,后台数据表 如下图所示
红框代表 软删除 操作 成功。
END
以上是关于任务34:管理员软删除的主要内容,如果未能解决你的问题,请参考以下文章