Laravel从模型关系中获得计数

时间:2020-10-05 15:55:55

标签: laravel

我有这3个模型。

Author
|id|name|

Post
|id|author_id|

Likes
|id|post_id|

关系。

作者

public function post()
{
    return $this->hasMany(Post::class, 'author_id', 'id');                                             
}

发布

public function author(){
    return $this->belongsTo(Author::class, 'id', 'author_id');
}

public function likes(){
    return $this->hasMany(Likes::class, 'post_id', 'id');
}

喜欢

public function post()
{
    return $this->belongsTo(Post::class, 'id', 'post_id');
}

我的问题是,如何从所有帖子中列出所有作者的总赞。

使用调用$ authors-> posts-> likes会导致错误,因为posts返回一个集合。

1 个答案:

答案 0 :(得分:1)

作者有很多帖子,帖子有很多喜欢。
要从 Author 模型获得所有喜欢,您可以定义 hasManyThrough() 关系:

public function likes()
{
   return $this->hasManyThrough(
       'App\Likes', // Likes model
       'App\Post', // Post model
       'author_id', // Foreign key on posts table...
       'post_id', // Foreign key on likes table...
       'id', // Local key on authors table...
       'id' // Local key on posts table...
   );
}