任务34:管理员【软删除】

1,数据的删除包括【物理删除】和【软删除】2种,实际工作中以软删除比较多,类似 windows 上的回收站的功能。

找到 \resources\views\Admin\User\index.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() 方法是要在  \resources\views\Admin\User\main.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, App\Http\Controllers\Admin\UserController.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,下面继续完善成【软删除】。

\database\migrations\2020_05_02_111103_create_users_table.php 修改 up() 方法 增加

  $table->softDeletes();

如下图所示位置:

4, 命令行 执行命令

php artisan migrate:refresh --seed

如下图,会重新 生成用户数据表和模拟数据,并多了一个 deleted_at 的时间字段【注:所谓软删除就是删除操作时在这个字段写入删除的时间,而要删除的记录物理上是没有被删除的,网页应用是通过这个字段来判断是否删除】

新生成的用户表如下所示:

5,在 App\Models\Admin\User.php  改为

<?php

namespace App\Models\Admin;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\user 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

猜你喜欢

转载自www.cnblogs.com/pensive/p/12911983.html