“远程”这个词很容易搞混淆。这里要讲的远程一对多关联查询,并不是远程链接服务器,进行一对多的关联查询。
远程一对多关联用于定义有跨表的一对多关系,用通俗的话讲,就是多张表,通过中间有关联的表,进行查询。
例如:
- 每个城市有多个用户
- 每个用户有多个话题
- 城市和话题之间并无关联
远程一对多关联,要用到hasManyThrough()方法
hasManyThrough()
定义:hasManyThrough(‘关联模型’, ‘中间模型’, ‘外键’, ‘中间表关联键’,’当前模型主键’,’中间模型主键’);
- 关联模型(必须):关联模型类名
- 中间模型(必须):中间模型类名
- 外键:默认的外键名规则是当前模型名+_id
- 中间表关联键:默认的中间表关联键名的规则是中间模型名+_id
- 当前模型主键:一般会自动获取也可以指定传入
- 中间模型主键:一般会自动获取也可以指定传入
实例:
我这里有三张数据库表,主表city,中间表users,被关联表blog,下面我们来看看这三张表的具体数据
city表
users表
blog()表
模型
Blog模型
Users模型
City模型
控制器
City控制器
输出结果: