如何定义复合主键的模型关联

假设A,B表中都为复合主键,我希望为其定义一对一的模型关联。

A LEFT JOIN B ON A.a=B.a and A.b=B.b

但hasOne并不允许我传入第二组参数也不接收数组。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 2

那我建议你多加一个字段,这个字段的值用 a.a与a.b 组合而成,B表也一样, 这样你就可以使用hasOne a.c = b.c 的关系模型关联了,适当冗余方便查询

3年前 评论

使用awobaz/compoships包,使用方法参照官方文档吧

namespace App;

use Illuminate\Database\Eloquent\Model;

class A extends Model
{
    use \Awobaz\Compoships\Compoships;

    public function b()
    {
        return $this->hasMany('B', ['foreignKey1', 'foreignKey2'], ['localKey1', 'localKey2']);
    }
}
3年前 评论

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