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 多对多关联中间表用法

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1

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

2周前 评论

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