thinkphp 关联模型 多对多关联 多表关联查询
多对多的查询
常见场景是权限控制, 一个用户有多个身份, 一个身份可以给多个用户.
users 模块 和其他模块
namespace app\model; use think\Model; class Users extends Model { public function role() { return $this->belongsToMany(Role::class,Assess::class); } } 在创建两个其他模块文件 Profile模块 Role模块
Assess 中间键模块
namespace app\model; use think\model\Pivot; class Assess extends Pivot { public function index() { } }
使用的地方 类里
namespace app\controller; use app\BaseController; use app\model\Profile; use app\model\Users; class Login extends BaseController { // 创建角色表role 和 中间表Assess public function index() { // 查找用户身份 // $user = Users::find(12); // return json($user->role); // 给某某添加已经存在的角色 12是users表的用户id 1 2 3是role表的角色id $user = Users::find(12); // $user->role()->save(1); // $user->role()->saveAll([1,2,3]); // 给某某添加新的角色 // $user->role()->save(['type'=>'测试工程师管理员']); // 和save()一样 如果有 可以操作其他字段 操作的是中间表Assess的字段 // $user->role()->attach(1); // $user->role()->attach(7, ['details' => '这里是测试工程师管理员']); // 删除中间表的数据 取消 更改用户的角色 1 2 3是role表的角色id $user->role()->detach(1); // $user->role()->detach([1,2,3]); } }
分类:
php
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析