laravel 多对多关联 中间表用法 (和文档多对多写法不一样 也不知道大家是不是都这么写的)

在开发过程中 我发现我写的多对多关联查询用法和同事写的不一样 又去翻了手册 发下官方文档貌似也没这种用法#

但是 这种却能查出来 而且灵活性还很高 查询条件也好处理#

也不知道这种用法 对不对 但是灵活性高就对了 大家看着指点有什么利弊#

数据库 模型关系如下

  • 题目 (ExamSubject)
  • 中间表试卷题目关联(ExaminationExamSubject)
  • 试卷 Examination

直接在中间表模型进行这么一个操作 一对一的去关联 试卷 一对一 去关联 考题
说白了 虽然是多对多 但对于中间表来说 他也算是属于 一对一 的一个情况

protected $table = 'examination_exam_subject';
//关联考题
public function exam_subject(){
  return $this->hasOne(ExamSubject::class,"id","exam_subject_id");

}
//关联试卷
public function exam_sj(){
  return $this->hasOne(Examination::class,"id","examination_id");
}

随后直接在中间表模型进行一个操作

ExaminationExamSubject::with(['exam_subject','exam_sj'])->get();

直接预加载关联查询 这种写的话查询条件什么的也好处理 灵活度也很高
但是官方没有给出这种用法
需求是用在了 dcat admin 的 grid 渲染 才写出了这种用法
附上 dcatadmin 的代码

laravel 多对多关联中间表用法

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

虽然没有用过 dcat, laravel 的关联,文档里面基本是直接忽视了中间表的存在。你这种是属于自定义中间表模型. 模型关联《Laravel 8 中文文档》 自定义中间表模型

2年前 评论