【问题标题】:Laravel Query Builder - group by and sumLaravel 查询生成器 - 分组和求和
【发布时间】:2019-09-12 01:20:11
【问题描述】:

我想获取用户活动列表。 但它应该只给我 5 个用户,他们有最多的活动和一个列,其中活动的总和按活动总和 DESC 排序。

$now = Carbon::now();
$lastWeekMonday = Carbon::now()->subWeek(1)->startOfWeek()->toDateString();
$mondayThisWeek = Carbon::now()->startOfWeek()->toDateString();

$userActivitiesLastWeek = DB::table('useractions')
    ->select('id', 'comment', 'created_user', 'created_at')
    ->where('created_at', '>=', $lastWeekMonday )
    ->where('created_at', '<', $mondayThisWeek )
    ->get();

感谢您的帮助!

【问题讨论】:

    标签: laravel laravel-query-builder


    【解决方案1】:

    您可以使用withCount Query Builder 函数来获取特定关系的计数。

    然后您可以按该计数排序并使用take Collection 函数从集合中获取所需数量的项目。在你的情况下,5。

    $now = Carbon::now();
    $lastWeekMonday = Carbon::now()->subWeek(1)->startOfWeek()->toDateString();
    $mondayThisWeek = Carbon::now()->startOfWeek()->toDateString();
    
    $uses = User::with('activities')
                ->withCount('activities')
                ->where('created_at', '>=', $lastWeekMonday )
                ->where('created_at', '<', $mondayThisWeek )
                ->get()
                ->sortByDesc('activities_count')
                ->take(5);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 2016-09-26
      • 2018-01-03
      • 2021-07-04
      • 2018-12-26
      • 1970-01-01
      • 2015-12-03
      相关资源
      最近更新 更多