首页 > 解决方案 > 在 Laravel 中使用 where 语句创建一个组

问题描述

我正在编写一个小脚本来加载 Attendee_logs,基于该脚本计算基于小时的打印总数。

首先,我从与会者那里加载 id

$allAttendees->pluck('id')->implode(',')

所以我从中得到 389832、321321(这是与会者的 id,基于一个组)。

现在我想按小时对它们进行分组。但我不知道如何添加whereIn语句

$badgesPrintedByDate = DB::table('Attendee_logs')->select(DB::raw('hour(created_at)'), DB::raw('COUNT(id)'))->whereIn('id', [$allAttendees->pluck('id')->implode(',')])->groupBy(DB::raw('hour(created_at)'));

当我这样做时,我得到一个空的结果。但是当我删除 whereIn 时,我得到了一个结果。

所以我的问题是,如何根据小时数计算行数以及在哪里提供 ID :)?

标签: laravelselect

解决方案


我认为这会奏效:

$badgesPrintedByDate = DB::table('Attendee_logs')->select(DB::raw('hour(created_at)'), DB::raw('COUNT(id)'))->whereIn('id', $allAttendees->pluck('id')->all())->groupBy(DB::raw('hour(created_at)'));

而不是说:

$allAttendees->pluck('id')->all()

它返回一个 id 数组,你也可以说:'

$allAttendees->pluck('id')->values()

或者:

$allAttendees->pluck('id')->toArray();

推荐阅读