Laravel中的多重关系(枢轴)

时间:2017-12-19 08:55:36

标签: php laravel pivot

我的相关模型存在问题。

有三种型号。用户,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)。

但我不知道怎么做。有没有人有想法?

1 个答案:

答案 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();