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 的代码
推荐文章: