Lumen企业站内容管理实战 - 管理员列表

管理员列表

 增删该查搞起来,先搞定路由

    // 管理员管理
    $router->get('/admin/list', 'AdminController@lists'); // 管理员列表
    $router->addRoute(['GET', 'POST'],'/admin/add', 'AdminController@add'); // 添加管理员
    $router->addRoute(['GET', 'POST'],'/admin/edit/{id:[1-9]+}', 'AdminController@edit');                     // 编辑管理员
    $router->post('/admin/del', 'AdminController@del'); // 删除管理员

然后管理员模型,管理员模型我们之前已经建立好了,这里我们直接写个列表lists()方法

<?php


namespace App\Models;


use Illuminate\Database\Eloquent\Model;

class Admin extends Model
{


    public function roles()
    {
        return $this->belongsToMany(Role::class, 'admin_roles', 'admin_id', 'role_id');
    }

    public static function lists(array $conditions, $page = 0, $perPage = 15)
    {
        $article = Admin::with('roles');

        !empty($conditions['title']) && $article->where('title', 'like', "{$conditions['title']}%"); // 模糊匹配标题查询
        $article->orderBy('id', 'DESC');

        return $article->paginate($perPage, ['*'], 'page', $page);
    }
}

管理员控制器

<?php


namespace App\Http\Controllers\Admin;


use App\Http\Controllers\Controller;
use App\Models\Admin;
use Illuminate\Http\Request;

class AdminController extends Controller
{
    public function lists(Request $request)
    {

        $admins = Admin::lists($request->input(),$request->input('page',0));

        $data['admins'] = $admins;
        return view('admin.admin.list', $data);
    }
}

前端代码我就不贴出来了,直接看看效果

 

添加管理员,先写模型

public static function add(array $adminData, array $roleData)
    {

        try {

            DB::transaction(function () use ($adminData, $roleData) {
                // 保存管理员信息
                $admin = new Admin();
                $admin->user_name = $adminData['user_name'];
                $admin->password = password_hash($adminData['password'], PASSWORD_BCRYPT); // 生成密码,不能明文保存
                $admin->email = $adminData['email'];
                $admin->state = (int)$adminData['state'];
                $admin->save();

                // 使用attach保存管理员和角色关系信息
                $admin->roles()->attach(array_values($roleData));
            });

        } catch (\Exception $e) {
            Log::error('添加管理员信息失败,失败信息:' . $e->getMessage());
            return false;
        }

        return true;

    }

 控制器中写个add方法

public function add(Request $request)
    {

        if($request->post()){
            // todo 验证数据;验证管理员不能重复
            Admin::add($request->input(),$request->input('roles'));

            return $this->response->responseJSON();
        }

        // 角色列表
        $roles = Role::lists();

        $data['roles'] = $roles;
        return view('admin.admin.add',$data);
    }

前端页面不帖出来了,直接看效果

 

 

 数据录入成功。

来看看编辑。先去模型里写个方法

    public static function edit(Admin $admin, array $adminData, array $roleData)
    {
        try {

            DB::transaction(function () use ($admin, $adminData, $roleData) {

                // 编辑使用sync(),使用其它的不行,attach是添加,detach是删除。
                $admin->roles()->sync(array_values($roleData));

                // 更新管理员数据
                !empty($adminData['user_name']) && $admin->user_name = $adminData['user_name'];
                !empty($adminData['password']) && $admin->password = password_hash($adminData['password'], PASSWORD_BCRYPT); // 生成密码,不能明文保存
                !empty($adminData['email']) && $admin->email = $adminData['email'];
                $admin->state = (int)$adminData['state'];
                $admin->update();

            });


        } catch (\Exception $e) {
            Log::error('编辑管理员信息失败,失败信息:' . $e->getMessage());
            return false;
        }

        return true;

    }

控制器写个edit方法

    public function edit(int $id, Request $request)
    {

        $admin = Admin::with('roles')->where('id', $id)->first();
        // todo 如果数据不存在,跳转到错误页面

        if ($request->post()) {
            // todo 验证数据;验证是否重复
            Admin::edit($admin, $request->input(), $request->input('roles'));
            return $this->response->responseJSON();
        }


        $usedRoles = [];
        foreach ($admin->roles as $item) {
            array_push($usedRoles, $item->pivot->role_id);
        }

        // 角色列表
        $roles = Role::lists();
        $data['roles'] = $roles;
        $data['usedRoles'] = $usedRoles;
        $data['admin'] = $admin;

        return view('admin.admin.edit', $data);
    }

看看关系数据中的数据

多给几个角色

 保存后再看看数据

 再点击编辑看看

 删除不介绍了,前边都有介绍,没啥技术难度。

完。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wangpeng52758

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

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

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

打赏作者

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

抵扣说明:

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

余额充值