我的相关模型存在问题。
有三种型号。用户,PostType(音乐,动物)和帖子。
用户可以选择他想要看的后期类型。所以我创建了一个pivot-table posttype_user。 现在我可以将选定的postTypes绑定到用户。
// User model
public function postTypes()
{
return $this->belongsToMany(PostType::class);
}
// PostType model
public function users()
{
return $this->belongsToMany(User::class);
}
Post模型有一个带有postType_id的外键。这种关系在模型中:
// Post model
public function postType()
{
return $this->belongsTo(PostType::class);
}
// PostType model
public function post()
{
return $this->hasMany(Post::class);
}
现在我想从当前用户(Auth :: user())接收所有Posts(选定的posTypes)。
但我不知道怎么做。有没有人有想法?
答案 0 :(得分:1)
您可以使用嵌套的whereHas()
:
Post::whereHas('postType', function($q) {
$q->whereHas('users', function($q) {
$q->where('id', auth()->id());
});
})->get();
或者你可以这样做:
$postTypeIds = auth()->user()->postTypes()->pluck('id');
$posts = Post::whereIn('post_type_id', $postTypeIds)->get();