【发布时间】:2021-01-26 19:48:17
【问题描述】:
我正在学习 laravel,虽然我找到了解决方案,但我很好奇是否有“更好”或更“laravel”的方法来做到这一点。这是我的工作解决方案:
(示例 1)
$students = Subclass::query()
->join('student_subclass', 'subclasses.id', '=', 'student_subclass.subclass_id')
->join('students', 'students.id', '=', 'student_subclass.student_id')
->select('*')
->where('subclasses.id', $request->subclass_id)
->get();
我有 3 个表:subclasses、students 和 student_subclass 作为数据透视表。上面的查询正确地返回了属于特定子类的学生(来自 $request)。 重要的部分是它还返回两个表中的所有字段。所以在我得到的集合中,对于每个学生,我也有只存在于子类表中的 t_class_id 字段。
如果我想使用我的关系,例如: (示例 2)
$students = Subclass::findOrFail($request->subclass_id)->students;
它更优雅,但我只从学生表中获取字段(这在大多数情况下都很好)。那么...有没有办法修改示例 2,以便它还为每个学生返回子类表中的字段? (那些不在数据透视表或学生表中的)。或者换个说法。我们能否将示例 1 转换为示例 2 的类型并得到示例 1 的准确结果?
【问题讨论】:
-
在您的
Students模型中创建另一个具有一对多关系的关系? laravel.com/docs/8.x/…
标签: laravel eloquent laravel-query-builder