假设我们有四个表:标签、贴子、回复和贴子标签
tags table:
id tag
1 tag A
2 tag B
3 tag C
posts table:
id post_content
1 some text A
2 some text B
3 some text C
post_tag table: (for many-many relationship between posts and tags)
post_id tag_id
1 1
1 2
2 3
replies table:
id post_id
1 1
2 1
3 2
现在,我希望生成一个表,该表给出每个标记的回复总数。基于上表的样本输出为:
id tag_id replies_count
1 1 2
2 2 2
3 3 1
我已经在标签和帖子之间建立了一种关系,但是我有没有办法在标签上生成一种关系,从而为我提供标签的所有回复?差不多
function replies() {
return $this->posts()->replies()
}
最后但并非最不重要的一点是,我希望更进一步:我希望得到的最后一个表将是一个表,其中每个标记都包含post计数和回复计数
id tag_id posts_count replies_count
1 1 1 2
2 2 1 2
3 3 1 1
您可以使用$with
属性将“回复”关系自动附加到Post模型,而不是在标记模型中创建新的关系方法。无论何时获取与该标签相关的所有帖子,它都将包括与该帖子相关的所有回复。
我不建议仅仅为了计算标签的回复而创建一个表,您可以在客户端利用响应数据来实现这一点。