如何对数据列表进行分组?

How to group list of datas?

我有三个table,第一个是posts table,第二个是post_users table 和 用户 .

post_userstable 包含 post 的标记用户。它有 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();

左边是上面代码的结果,我只想问一下如何达到想要的结果?我也很感激 Eloquent 的答案。

要使用 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 时,你只需这样做:

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

试试这个方法!

有关详细信息,请阅读 docs