如何对数据列表进行分组?
How to group list of datas?
我有三个table,第一个是posts table,第二个是post_users table 和 用户 .
post_userstable 包含 post 的标记用户。它有 post_id
和 user_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的关系,当然这跟
您的数据库分析:
- 如果您的关系是一对多:
// Post Model
public function tags()
{
return $this->hasMany('App\Models\Tag');
}
// Tag Model
public function posts()
{
return $this->hasMany('App\Models\Post');
}
- 或者你的关系是多对多的:
// 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。
我有三个table,第一个是posts table,第二个是post_users table 和 用户 .
post_userstable 包含 post 的标记用户。它有 post_id
和 user_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的关系,当然这跟 您的数据库分析:
- 如果您的关系是一对多:
// Post Model
public function tags()
{
return $this->hasMany('App\Models\Tag');
}
// Tag Model
public function posts()
{
return $this->hasMany('App\Models\Post');
}
- 或者你的关系是多对多的:
// 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。