【技术分享】TP6框架实现数据表多对多相互关联

前言:现在很多软件厂商喜欢使用TP框架来开发应用,本文章分享TP6框架的进阶技巧

正文:

笔者这次要分享的ThinkPHP 6框架技巧比较小众,数据表多对多场景多出现于权限管理。

比如一个用户在一个应用内可以被分为超级管理员,运维,订阅者等等的不同角色,不同角色对应了不同的权限集,而角色里的用户也不只有一位,通俗的讲即为X个用户对应于X种角色,X种角色对于各种不同的权限,这就会用到数据库的多对多关联查询。

下文是一个简单实例,包括多对多的新增角色和删除角色以及修改角色。

//多对多关联代码,一般用于权限管理.

//---模型类代码:
public function roles(){
    return $this->belongsToMany(Role::class, Access::class, 'role_id' , 'user_id');
}


//---控制器类代码:
//打印出id为33用户的所有权限
$user = UserModel::find(33);
$roles = $user->roles->toArray();
print_r($roles);



$user = UserModel::find(33);
//给一个用户新增一个权限的两种方法
$user->roles()->save(5);
$user->roles()->save(Role::find(4));

//给一个用户增加一个权限并且还可以给另一个列新增一个备注信息
$user->roles()->attach(Role::find(5), ['details'=>'测试详情']);

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享