Laravel withCount 用法

比如:文章控制器ArticleController.php查询文章列表数据的时候用withCount连接Comment,Zan模型直接统计每篇文章的评论和点赞数量。

使用之前需要在文章模型文件Article.php中建立与评论和赞模型的关联关系,且方法名字和withCount里面填写的一样。 
Article.php模型中定义comments方法用调用hasMany和Comment建立模型一对多关系

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

Article.php模型中定义zans方法调用hasMany和Zan建立模型一对多关系

public function comments(){
        return $this->hasMany(Comment::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)
    <div class="blog-post">
       <h2 class="blog-post-title"><a href="/article/{{$art->id}}">{{$art->title}}</a></h2>
       <p class="blog-post-meta">{{$art->created_at}}<a href="/user/5"> by {{$art->user->name}}</a></p> {!! str_limit($art->content, 200, '....') !!}
       <p class="blog-post-meta">赞{{$art->zans_count}} | 评论 {{$art->comments_count}}</p>
   </div>
@endforeach

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值