【PHP】tp6多表连接查询

一对一hasOne

public function user()
{
    return $this->hasOne(User::class, 'user_id', 'user_id');
}

远程一对一(三表)hasOneThrough

public function assessCompany()
{
    /* 用白话文讲6个参数意思,注意参数3,5配对  参数4,6配对
     * 参数1,我最终需要获取的那张表的模型
     * 参数2,我需要使用到的中间表模型
     * 参数3,中间表与主表相等的字段 (本例为id=assess_effect_id)
     * 参数4,目标表与中间表相等的字段 (本例为company_id=id)
     * 参数5,主表与中间表相等的字段 (本例为id=assess_effect_id)
     * 参数6,中间表与目标表相等的字段 (本例为company_id=id)
     * */
    return $this->hasOneThrough(CompanyInfo::class, AssessEffect::class, '表2.id', '表3.id', '表1.assess_effect_id', '表2.company_id');
}

后面弃用===============
表一user_id** =》 关联表二user_id(找到表二中unit_id) =》 关联表三unit_id(找到表三中full_name)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

hasOneThrough(表三目标模型,表二中间模型,表二id(用于连接表三),表三id(用于关联表二),表一id(用于连接表二),表二id(用于连接表一))
 public function userUnit()
 {
     return $this->hasOneThrough(SysUnit::class, User::class, 'unit_id', 'unit_id', 'user_id', 'user_id');
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值