项目中当我们需要统计一个表中的多个字段或需要将其保存到变量中进行使用,比如 当我们需要得到昨天以及一周前文章的阅读量、分享量、点赞量、评论量、之后还要将他们进行对比,如果说使用多次sql或者在一次sql中进行统计,势必拉低了性能。
在这个业务场景中,larave的集合 collect() 就能派上用场。
$article = Article::where('site_id', $siteId)->get()->toArray(); $yesterdayRead = collect($article)->where('date', $yesterday)->sum('read'); $yesterdayShare = collect($article)->where('date', $yesterday)->sum('share'); $yesterdayPraise = collect($article)->where('date', $yesterday)->sum('praise'); $yesterdayComment = collect($article)->where('date', $yesterday)->sum('comment'); $weekRead = collect($article)->where('date', $week_ago)->sum('read'); $weekShare = collect($article)->where('date', $week_ago)->sum('share'); $weekPraise = collect($article)->where('date', $week_ago)->sum('praise');...$weekReadPercentage = CommonMethod::getPercentage($yesterdayRead, $weekRead);