Laravel回归归咎于多对多关系

时间:2018-04-22 22:49:37

标签: laravel

如何使用此方案返回ManytoMany关系中的分组数据集的集合?

以下是我想要返回的数据集的示例

enter image description here

所以,让我们把收藏作为流派,突出显示的日期是genres name,它也是一个集合。我想根据该集合中的genres name对其进行分组。

我的模特:

视频

```
public function genres() {
    return $this->belongsToMany(Genre::class);
}
```

类型

```
public function videos() {
    return $this->belongsToMany(Video::class);
}
```

我已经尝试了以下内容,但似乎无法得到它。

```
$videos = Video::with('genres')->all();
$collection = $videos->groupBy('genres.name');
```

我想按类型名称对数据集进行分组,因为知道类型的关系也是一个类型的集合。

1 个答案:

答案 0 :(得分:0)

集合和查询构建器共享许多类似的功能,例如where()groupBy()等。这是一个很好的语法糖,但它确实掩盖了潜在的技术。

  1. 如果您拨打$ model->视频...就像属性一样,那就是一个集合(查询已执行)。
  2. 如果您将$ model-> videos()...称为方法,那就是查询构建器。
  3. 因此,如果您想在sql中完成工作,您可以执行类似......

    的操作
    $video_query_builder = Video::with('genere');
    $video_query_builder->groupBy('genere_id');
    $result = $video_query_builder->get();
    

    你可以像评论中所建议的那样,将它们整齐地链接在一起......就像这样:

    $result = Video::with('genere')
                   ->groupBy('genere_id')
                   ->get();