通过 laravel 中的关系进行咨询

Consultation through relationships in laravel

我在这里无休止地搜索可以回答我问题的问题,但没有找到。我的问题如下,我有 3 个模型:User、Post 和 Comments。其中 user 与一对多发帖有关系,Post 也与一对多评论有关系。我怎样才能得到所有用户对所有帖子的评论? 目前我的解决方案是这样的:

模型用户:

    public function comments(){
        $comments = array();

        foreach ($this->posts()->get() as $el) {
            foreach ($el->posts()->get() as $nEl) {
                array_push($comments, $nEl);
            }
        }
        return collect($comments);
    }

我想要 laravel 的更便宜的本机解决方案(如果有的话)。

在您的 User 模型上,类似于:

public function getComments()
{
    return Comment::whereHas('posts', function ($query) {
        $query->where('user_id', $this->id);
    })->get();
}

另见: https://laravel.com/docs/6.x/eloquent-relationships#has-many-through