Laravel返回分组多对多关系
在这种情况下,如何返回多个关系中的分组数据集集合 下面是我想要返回的数据集的示例 因此,让我们将收藏夹作为流派,突出显示的日期是Laravel返回分组多对多关系,laravel,Laravel,在这种情况下,如何返回多个关系中的分组数据集集合 下面是我想要返回的数据集的示例 因此,让我们将收藏夹作为流派,突出显示的日期是流派名称,它也是一个集合。我想根据该集合中的流派名称对其进行分组 我的模型: 录像带 体裁 我已经试过下面的方法了,但似乎没有成功 ``` $videos = Video::with('genres')->all(); $collection = $videos->groupBy('genres.name'); ``` 我想按流派名称对数据集进行分组,因
流派名称
,它也是一个集合。我想根据该集合中的流派名称对其进行分组
我的模型:
录像带
体裁
我已经试过下面的方法了,但似乎没有成功
```
$videos = Video::with('genres')->all();
$collection = $videos->groupBy('genres.name');
```
我想按流派名称对数据集进行分组,因为我知道流派的关系也是流派的集合。集合和查询生成器共享许多类似的函数,如where()groupBy()等。这是很好的语法糖,但它确实掩盖了底层技术
如果您调用$model->videos。。。与属性一样,这是一个集合(查询已执行)
如果调用$model->videos()。。。与方法类似,这是一个查询生成器
因此,如果您想在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();
嘿,$collection从何而来?哦,对不起,我是想将返回的数据集分配到collection变量中。您可能希望使用Video::with('genres')->all()加载流派代码>也是啊!我已经加载了数据集,我想将返回的数据集分组为以下格式:“Blues”:[{“name”:“Blues”},{“name”:“Blues”},],“Hip Hop”:[{“name”:“Blues”}]您可以在查询中添加一个:$genres=Genre::has('videos')->with('videos')->get()
('genre')->groupBy('genre_id')->get()
。不确定它是否有效,只是想提一下,没有理由使用3行。@devk完全正确。您可以将其链接在一起。我的长篇大论只是为了清晰起见。这不起作用,因为视频表上没有流派id,这是使用透视表的多对多关系。一个视频可以有多个流派或a一个。或者,也许你想用视频获得所有代?从另一个方向开始?如果你使用一个集合,那么最简单的方法就是在你的视频模型中添加一个流派slug maker。然后你可以根据它进行分组。在video.php模型类中添加类似的内容。公共函数getGenreSlugAttribute(){return Inpode('-',$this->genres->pulk('name')->flatte()->toArray();}然后你可以使用('genre')->get()->groupBy('quare_slug');
$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();