任务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>&nbsp;&nbsp;确定删除么?", 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:管理员软删除的主要内容,如果未能解决你的问题,请参考以下文章

如何在symfony中禁用doctrine的软删除(软删除)过滤器

如何删除使用片段管理器添加的所有片段?

软输入键盘隐藏编辑文本

在片段替换上显示/隐藏 Android 软键盘

Laravel - 软删除没有生效

VSCode自定义代码片段(vue主模板)