通过 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
我在这里无休止地搜索可以回答我问题的问题,但没有找到。我的问题如下,我有 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