我无休止地搜索了可以在这里回答我问题的问题,但没有找到。我的问题如下,我有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提供一个较便宜的本地解决方案。
在您的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