我无休止地搜索了一个回答我的问题,但我没有找到它。我的问题如下,我有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);
}
我想要一个更便宜的原生解决方案,如果有的话。
在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