请教下各位大佬,一对一关联的问题

当前有A、B表,其中A表中d_id分别指向了B表的m_id、和s_id,由于特殊原因,所以才有这种架构。

A表中有关联方法 get_b_mid,

hasOne(B,’m_id’,’d_id’);

获取数据时外部是使用的with(A)来进行获取的,但是这种方法会获取不到s_id的数据,如想在with的时候获取数据如何覆盖到s_id的?

我记得where里面有用 | 来分割字段名,hasOne好像bing bu xin

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 4

模型定义

class A extends Model
{
    // 关联 B 表的 m_id
    public function getBMid()
    {
        return $this->hasOne(B::class, 'm_id', 'd_id');
    }

    // 关联 B 表的 s_id
    public function getBSid()
    {
        return $this->hasOne(B::class, 's_id', 'd_id');
    }
}

控制器加载关联

$results = A::with(['getBMid', 'getBSid'])->get();
//访问关联数据
foreach ($results as $a) {
    $bMidData = $a->getBMid;  // 获取 m_id 对应的 B 表数据
    $bSidData = $a->getBSid;  // 获取 s_id 对应的 B 表数据
}
4个月前 评论
Frees (楼主) 4个月前
working (作者) 4个月前

把m_id的值刷到s_id或者s_id刷到m_id

4个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!