laravel 增删改查

角色路由
/*角色列表*/
Route::get('/role/index','User\RoleController@index')->name('user.role.index');

//分配权限
Route::get('role/node{role}','User\RoleController@node')->name('user.role.node');
Route::post('role/node{role}','User\RoleController@nodeSever')->name('user.role.node');
角色控制器
<?php

namespace App\Http\Controllers\User;

use App\Http\Controllers\Controller;
use App\Models\Node;
use App\Models\Role;
use Illuminate\Http\Request;
use think\View;

class RoleController extends BaseController
{
   
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
   
        //获取搜索框
        $name = $request->get('name');
        //参数1  变量值存在  则执行  参数2   匿名函数
        $data = Role::when($name,function ($query) use ($name) {
   
           $query->where('name','like',"%{$name}%");
        })->paginate($this->pagesize);

//        $data = Role::paginate($this->pagesize);
       return view('user.role.index',compact('data'));
    }


    // 给角色分配权限
    public function node(Role $role){
   
        // 当前角色有的权限
        $data = $role->nodes()->pluck('id')->toArray();
        // 所有权限
        $nodeAll=(new Node())->getAllList();
        return view('user.role.node',compact('role','nodeAll','data'));
    }

    // 保存角色权限
    public function nodeSever(Request $request,Role $role){
   
        $role->nodes()->sync($request->get('node'));
        return redirect(route('user.role.index',$role));
    }

}

Node模型
// An highlighted block
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Node extends Base
{
   

    protected $guarded=[];

    // 修改器  route_name路由别名 RouteName set字段名Attribute  字段名首字母大写,遇下划线后字母大写
    public function setRouteNameAttribute($value){
   
        //如果字段值为null,则设置为空字符串    修改和添加时生效  create 或  update
          $this->attributes['route_name'] = empty($value)?'':$value;
    }

    // 访问器  menu => Menu
    public function getMenuAttribute(){
   
        if ($this->is_menu == '1'){
   
            return '<span class="label label-success radius">是</span>';
        }
        return '<span class="label label-danger radius">否</span>';
    }


   //获取全部数据
    public function getAllList(){
   
        $data = self::get()->toArray();
      // dd($this->treelevel($data));
        return $this->treelevel($data);
    }



    //获取层级目录
    public function getMenuData(){
   
        $data = self::where('is_menu','1')->get()->toArray();
        $data = self::formatDate($data);
        $menu =  $this->treeMenu($data);
        return $menu;
    }
}

Role模型
// An highlighted block
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Role extends Base
{
   

    protected $guarded=[];

    //角色与权限 多对多关联
    public function nodes(){
   
        // 参数1   关联模型
        //参数2    中间表的表名,没有前缀
        //参数3    本模型对应的外键ID
        //参数4    关联模型对应的外键ID
        
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值