我正在尝试获取所有时间和过去 24 小时内下载文件的总数以用于报告目的。我正在处理的表有一个 downloaded_at
字段,它是一个 DATETIME
类型和一个 size
字段,它是以字节为单位的文件大小。在我的模型中,我正在执行以下查询:
return array(
'totalBandwidth' => self::where('downloaded_at', 'IS NOT', DB::raw('null'))->sum('size'),
'bandwidthLast24Hours' => self::where('downloaded_at', 'IS NOT', DB::raw('null'))->where('downloaded_at', '>' , new DateTime('yesterday'))->sum('size')
);
非常简单,但是这两个查询都返回 NULL
,我不明白为什么。我几乎根据 SO 和 Laravel 论坛上的答案编写了这些查询。
最佳答案
那是因为你不能像那样检查 IS NOT NULL
。您必须使用 whereNotNull
方法。示例:
return array(
'totalBandwidth' => self::whereNotNull('downloaded_at')->sum('size'),
'bandwidthLast24Hours' => self::whereNotNull('downloaded_at')->where('downloaded_at', '>', new DateTime('yesterday')->sum('size')
);
关于mysql - 使用 Eloquent 获取具有 where 条件的字段总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20308376/