关于远程一对一的关联,我们先来看看官方文档的说法。官方采用举例子的方式进行说明:

远程一对一关联用于定义有跨表的一对一关系,例如:

  • 每个用户有一个档案
  • 每个档案有一个档案卡
  • 用户和档案卡之间并无关联

远程一对多关联,要用到hasOneThrough()方法

hasOneThrough()

定义:hasOneThrough(‘关联模型’, ‘中间模型’, ‘外键’, ‘中间表关联键’,’当前模型主键’,’中间模型主键’);

  • 关联模型(必须):关联模型类名
  • 中间模型(必须):中间模型类名
  • 外键:默认的外键名规则是当前模型名+_id
  • 中间表关联键:默认的中间表关联键名的规则是中间模型名+_id
  • 当前模型主键:一般会自动获取也可以指定传入
  • 中间模型主键:一般会自动获取也可以指定传入

实例:

我这里有三张数据库表,主表users,中间表profile,被关联表card,下面我们来看看这三张表的具体数据。

users表
image.png

profile表

image.png

card表

image.png

模型

card模型
image.png

profile模型
image.png

users模型
image.png

控制器

users控制器

image.png

输出结果:

image.png