laravel-cms人员管理编辑角色

更改Models\Admin.php

在删除Admin中的数据时,同时删除关联的Role

<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class Admin extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;
    public $timestamps = false;
    public function role(){
        return $this->hasOne(AdminRole::class);
    }
    protected static function boot(){
        parent::boot();
        static::deleting(function($admin){
            $admin->role()->delete();
        });
    }
}

更改AdminController.php

在获取详情和编辑时,同时处理对应的Role

<?php

namespace App\Http\Controllers\admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Requests\AdminCreateRequest;
use Illuminate\Support\Facades\Hash;
use App\Models\Admin;
use App\Models\Role;
use App\Models\AdminRole;
use Illuminate\Support\Facades\DB;

class AdminController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $admins = Admin::paginate(2,['id','username']);
        // 获取所有的角色
        $roles = Role::all();
        return view('admin.admin',['admins'=>$admins,'roles'=>$roles]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(AdminCreateRequest $request)
    {
        DB::beginTransaction();
        try{
            //
            $username = $request->input('username');
            $password = Hash::make($request->input('password'));
            $role_id = $request->input('role');
            $admin = new Admin();
            $admin->username = $username;
            $admin->password = $password;
            $state = $admin->save();
            
            $admin_id = $admin->id;

            $adminRole = new AdminRole();
            $adminRole->admin_id = $admin_id;
            $adminRole->role_id = $role_id;

            $adminRoleState = $adminRole->save();
            
            if($state && $adminRoleState)
            {
                DB::commit();
                return response()->json(['code'=>'200','msg'=>'添加成功']);
            }
        }catch(\Exception $e){
            DB::rollback();
        }
        return response()->json(['code'=>'1000','msg'=>'添加失败']);
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(AdminCreateRequest $request, $id)
    {
        $username = $request->input('username');
        $password = Hash::make($request->input('password'));
        $role_id = $request->input('role');
        DB::beginTransaction();
        try{
            $state = Admin::where('id',$id)->update(['username'=>$username,'password'=>$password]);
            $adminRoleState = AdminRole::where('admin_id',$id)->update(['role_id'=>$role_id]);
            if($state && $adminRoleState)
            {
                DB::commit();
                return response()->json(['code'=>'200','msg'=>'更改成功']);
            }else{
                DB::rollback();
            }
            
        }catch(\Exception $e){
            DB::rollback();
        }
        return response()->json(['code'=>'1000','msg'=>'更改失败']);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $state = Admin::destroy($id);
        //
        if($state)
        {
            return response()->json(['code'=>'200','msg'=>'删除成功']);
        }else{
            return response()->json(['code'=>'1000','msg'=>'删除失败']);
        }
    }
    // 获取某个人员具体信息
    public function detail($id){
        $admin=Admin::where('id',$id)->with('role:admin_id,role_id')->first(['id','username']);
        if($admin)
        {
            return response()->json(['code'=>'200','info'=>$admin]);
        }else{
            return response()->json(['code'=>'1000','msg'=>'获取信息失败']);
        }
    }
}

更改admin.blade.php

编辑的弹框显示出来默认选中的角色

@extends('admin.common')
@section('content')

      
          @foreach ($admins as $k=>$v)
          
          @endforeach
        
ID 名称 操作
{{$v['id']}} {{$v['username']}}
@endsection @section('javascript') @endsection
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章