拉拉维尔雄辩地检索部分关系


laravel eloquent retrieve part of relationship

我正在使用雄辩的应用程序来检索模型。

地位

假设我有一个GROUP,PERSON,HOBBY的模型。

所有这些都是1:n连接的

GROUP 1---n PERSON
PERSON 1---n HOBBY

方法可能是检索模型:

$group = Group::find(123)->with('persons.hobbies')->get();

为了在我的模板中显示模型,我会将我的组发送到模板。然后我会遍历我在那个组中的人以及我的爱好,例如显示爱好的名称。

问题

因为这个模型非常(!)微不足道。我想知道是否有可能(无用或无用)直接检索(而不是嵌套)所有爱好(作为雄辩模型的数组)。但我唯一知道的是开头的组(即组 ID)?

提前致谢

是不可能的,因为groupperson之间的 1---n 关系可以为给定group_id返回许多person对象。无法访问收藏的爱好列表。

如果你真的想"直接"做到这一点,我的建议是你使用Fluent.查询生成器,而不是Eloquent,来联接表。

像这样:

DB::select('hobby.*')
  ->from('hobby')
  ->join('group', 'group.id = person.group_id')
  ->join('person', 'person.hobby_id = hobby.id')
  ->where('group.id', $group_id);