Laravel withCount 用法

比如:文章控制器ArticleController.php查询文章列表数据的时候用withCount连接Comment,Zan模型直接统计每篇文章的评论和点赞数量。
使用之前需要在文章模型文件Article.php中建立与评论和赞模型的关联关系,且方法名字和withCount里面填写的一样。
Article.php模型中定义comments方法用调用hasMany和Comment建立模型一对多关系

public function comments(){ return $this->hasMany(Comment::class, 'art_id', 'id')->orderBy('created_at', 'desc'); }

Article.php模型中定义zans方法调用hasMany和Zan建立模型一对多关系
public function zans(){ return $this->hasMany(Zan::class, 'art_id', 'id')->orderBy('created_at', 'desc'); }

ArticleController.php控制器中分页查询文章列表,就可以把模型中定义关联关系的方法名字数组形式传入withCount()里面
$articles = Article::orderBy('created_at', 'desc')->withCount(["comments","zans"])->paginate(10);

模板中:遍历的时候调用关联方法名字加_count组合的字段显示出统计结果 :{{$art->xxx_count}}
@foreach ($articles as $key=>$art)
{{$art->title}} {{$art->created_at}} by {{$art->user->name}}
{!! str_limit($art->content, 200, '....') !!} 赞{{$art->zans_count}} | 评论 {{$art->comments_count}}
@endforeach

【Laravel withCount 用法】Laravel withCount 用法
文章图片

    推荐阅读