如何分组数据列表?

问题描述

我有三个表,第一个 posts 表,第二个是 post_users 表和 users

post_users 表包含帖子的标记用户。它具有post_iduser_id列。

下面是我的工作代码

DB::table('posts')
->select(
    'posts.id AS post_id','posts.likes AS post_likes','post_user.user_id AS tagged_users'
)
->join('post_user','post_user.post_id','posts.id')
->orderBy('posts.created_at','DESC')
->get();

左侧是以上代码的结果,我只想问一下如何实现期望的结果?我也很感谢雄辩的答案。

enter image description here

解决方法

使用laravel-eloquent的方法如下:

首先,在其模型中设置post和tag之间的关系,这当然与 您的数据库分析:

  1. 如果您的关系是一对多的:
// Post Model
public function tags()
{
    return $this->hasMany('App\Models\Tag');
}
// Tag Model
public function posts()
{
    return $this->hasMany('App\Models\Post');
}

  1. 或者您的关系很多:
// Post Model
public function tags()
{
    return $this->belongsToMany('App\Models\Tag');
}
// Tag Model
public function posts()
{
    return $this->belongsToMany('App\Models\Post');
}

最后,当您想要获得带有自标记的帖子时,您只需这样做:

Post::with('tags')->get();

尝试一下!

有关更多信息,请阅读docs

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...