为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 通过关系 id 收集数据

Laravel 通过关系 id 收集数据

PHP
慕无忌1623718 2023-04-28 16:01:50
在我的应用程序中,我有一个帖子表、类别表和 category_post 表,因为帖子和类别具有多对多关系。我想获取所有帖子及其附加类别,但也将它们分组在一起,因为在我的前端我想循环一个对象并显示这样的列表,烹饪职位编号 1帖子编号 3职位编号 4音乐职位编号 2帖子编号 5语言邮政编号 6邮政编号 7我知道在我的控制器中我可以做到这一点,$posts = Post::with('categories')->get();但是我不知道如何对关系属性进行分组,或者我是否可以以可以循环遍历它以形成下面的列表的方式来构造返回的数据。
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

您可以从数据库中获取数据,然后按照您想要的方式对它们进行分组:


$posts = Post::with('categories')->get();


$result = $posts->groupBy([

    'categories',

    function ($item) {

        return $item['category_name'];

    },

], $preserveKeys = true);

有关按关系字段分组的更多详细信息:


https://laravel.com/docs/7.x/collections#method-groupby


查看完整回答
反对 回复 2023-04-28
?
慕斯709654

TA贡献1840条经验 获得超5个赞

根据给定的表:posts 和 categories 表是主表,category_post 表是一个数据透视表,其中包含 posts 和 categories 表之间的关系:


所以,你的关系应该是 posts->category_post->categories


$posts = Posts::with('category_post')->get();


$grouped = $posts->groupBy('category_post.category_id');


category_post 还与类别数据的类别表相关。


查看完整回答
反对 回复 2023-04-28
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

belongsToMany在类别模型中,您可以像下面这样设置和关系


function posts()

{

   return $this->beongsToMany(Post::class, 'category_post', 'category_id', 'post_id');

}


查看完整回答
反对 回复 2023-04-28
  • 3 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信