Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)


Posted in PHP onFebruary 15, 2017

背景:

现有 group (组)和 user (用户) 两种实例。

一个 group 中可以拥有多个 user,一个 user 也可以属于有多个 group (多对多关系)

GroupUserRelation 表用于绑定组合组员的关系(使用id绑定)

字段有 id, group_id, user_id

现有User(用户)表, 需要获取 其所属的所有用户组的信息,需要使用hasMany()进行多表关联。

User.id => GroupUserRelation.user_id
GroupUserRelation.group_id => Group.id

方法1

public function getGroup()
{
  return $this->hasMany(Group::className(), ['id' => 'group_id'])
     ->viaTable(GroupUserRelation::tableName(), ['user_id' => 'id']);
}

方法2

public function getGroup()
{
  return $this->hasMany(Group::className(), ['id' => 'group_id'])
     ->viaTable('groupUserRelation');
}
public function getGroupUserRelation()
{
  return $this->hasMany(GroupUserRelation::tableName(), ['user_id' => 'id']);
}

以上所述是小编给大家介绍的Yii2 hasOne(), hasMany() 实现三表关联的方法(两种),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP添加MySQL数据记录代码
Jun 07 PHP
php面向对象全攻略 (七) 继承性
Sep 30 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
Jan 19 PHP
关于PHP session 存储方式的详细介绍
Jun 25 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
使用新浪微博API的OAuth认证发布微博实例
Mar 27 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
Jul 28 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
基于php双引号中访问数组元素报错的解决方法
Feb 01 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
Jun 20 PHP
PHPUnit + Laravel单元测试常用技能
Nov 06 PHP
基于ThinkPHP删除目录及目录文件函数
Oct 28 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
Feb 15 #PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 #PHP
PHP使用Redis替代文件存储Session的方法
Feb 15 #PHP
Yii2中多表关联查询hasOne hasMany的方法
Feb 15 #PHP
php+Memcached实现简单留言板功能示例
Feb 15 #PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
Feb 14 #PHP
PHP中Trait及其应用详解
Feb 14 #PHP
You might like
PHP服务器页面间跳转实现方法
2012/08/02 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
2014/11/01 PHP
php实现json编码的方法
2015/07/30 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python中的进程分支fork和exec详解
2015/04/11 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
一份python入门应该看的学习资料
2018/04/11 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
python set集合使用方法解析
2019/11/05 Python
pytorch实现线性拟合方式
2020/01/15 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
销售人员个人求职信
2013/09/26 职场文书
商场消防演习方案
2014/02/12 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
刑事撤诉申请书
2015/05/18 职场文书
mysql分表之后如何平滑上线详解
2021/11/01 MySQL