“远程”这个词很容易搞混淆。这里要讲的远程一对多关联查询,并不是远程链接服务器,进行一对多的关联查询。

    远程一对多关联用于定义有跨表的一对多关系,用通俗的话讲,就是多张表,通过中间有关联的表,进行查询。

    例如:

    • 每个城市有多个用户
    • 每个用户有多个话题
    • 城市和话题之间并无关联

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

    hasManyThrough()

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

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


    实例:

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

    city表

    image.png

    users表
    image.png

    blog()表
    image.png

    模型

    Blog模型

    image.png

    Users模型

    image.png

    City模型

    image.png

    控制器

    City控制器

    image.png

    输出结果:

    image.png