通过laravel中的关系进行的协商

问题描述 投票:0回答:1

我无休止地搜索了可以在这里回答我问题的问题,但没有找到。我的问题如下,我有3个模型:用户,帖子和评论。用户与一对多发布具有关系,而发布与一对多评论也具有关系。如何获得所有帖子上用户的所有评论?目前,我的解决方案如下所示:

模型用户:

    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提供一个较便宜的本地解决方案。

laravel laravel-5 eloquent laravel-4
1个回答
0
投票

在您的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

© www.soinside.com 2019 - 2024. All rights reserved.