我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Thinkphp 6.0多对多关联查询

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Thinkphp 6.0多对多关联查询

本节课我们来了解关联模型中,多对多的关联查询以及新增删除等操作。 一.多对多关联 1. 复习一下一对一,一个用户对应一个用户档案资料,是一对一关联; 2. 复习一下一对多,一篇文章对应多个评论,是一对多关联; 3. 多对多怎么理解,分解来看,一个用户对应多个角色,而一个角色对应多个用户; 4. 那么这种对应关系,就是多对多关系,最经典的应用就是权限控制; 5. 首先,我们来看多对多关系的三张表,具体如下:

 6. tp_user:用户表;tp_role:角色表;tp_access:中间表;

7. access 表包含了 user role 表的关联 id ,多对多模式; 8. User.php 的模型中,设置多对多关联,方法如下:
public function roles(){return $this->belongsToMany(Role::class, Access::class);}
9. roles 方法中, belongsToMany 为多对多关联,具体参数如下: belongsToMany(' 关联模型 ',' 中间表 ',[' 外键 ',' 关联键 ']);
$this->belongsToMany(Role::class, Access::class, 'role_id', 'user_id');
10. role.php access.php 创建一个空模型即可,无须创建任何; 11. 注意: Role 继承 Model 即可,而中间表需要继承 Pivot 12. user.php 中,创建 many() 方法,用于测试,查询方式如下:
public function many(){//得到一个用户:蜡笔小新$user = UserModel::find(21);//获取这个用户的所有角色$roles = $user->roles;//输出这个角色所具有的权限return json($roles);}
13. 当我们要给一个用户创建一个角色时,用到多对多关联新增; 14. 而关联新增后,不但会给 tp_role 新增一条数据,也会给 tp_access 新增一条;
$user->roles()->save(['type'=>'测试管理员']);$user->roles()->saveAll([[...],[...]]);
15. 一般来说,上面的这种新增方式,用于初始化角色比较合适; 16. 也就是说,各种权限的角色,并不需要再新增了,都是初始制定好的; 17. 那么,我们真正需要就是通过用户表新增到中间表关联即可;
$user->roles()->save(1);或:$user->roles()->save(Role::find(1));$user->roles()->saveAll([1,2,3]);或:$user->roles()->attach(1);$user->roles()->attach(2, ['details'=>'测试详情']);
18. 除了新增,还有直接删除中间表数据的方法:
$user->roles()->detach(2);

来源地址:https://blog.csdn.net/qq_34820433/article/details/129794150

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Thinkphp 6.0多对多关联查询

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ThinkPHP多表联合查询怎么用

这篇文章主要介绍ThinkPHP多表联合查询怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!thinkphp是什么thinkphp属于一种免费的开发框架,能够用于开发前端网页,最早thinkphp是为了简化开发而
2023-06-14

Mysql 多表关联查询

文章目录 1. Mysql中表之间的关系1.1 多表关系1.2 外键约束 2. 多表联合查询2.1 交叉连接查询:笛卡尔积2.2 内连接查询:inner join2.3 外连接查询2.3.1 左连接:2.3.2 右连接:2.3.
2023-08-21

MySQL的多表关联查询

一、多表关联查询 多表关联查询是使用一条SQL语句,将关联的多张表的数据查询出来。 1.1 交叉查询 交叉查询就是将多张表的数据没有条件地连接在一起进行展示。 1.1.1 语法 使用交叉查询类别和商品 -- 目标:查询所有分类,以及每个分类
2023-08-22

MyBatis中怎么进行一对多关联查询

在MyBatis中进行一对多关联查询可以通过在映射文件中使用嵌套查询来实现。具体步骤如下:在映射文件中定义两个查询语句,一个用于查询主实体,另一个用于查询从实体,并在从实体的查询语句中使用嵌套查询来关联主实体。例如: