mysql - 使用 Eloquent 获取具有 where 条件的字段总和

标签 mysql sql laravel-4 eloquent

我正在尝试获取所有时间和过去 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/

相关文章:

sql - MS Access VBA - 使用 SELECT INTO 创建新表并添加记录

mysql - 所需产品选项 laravel

php - Laravel/Eloquent - 按模型关系排序而不使用表名称

mysql - php/mysql 已达到最大连接数

php - MySQL 注入(inject)预防不起作用?

MySQL - 按 count() 和 GROUP BY 排名

c# - 使用 TOP 1 插入和删除语句

mysql - Spark工作人员同时更新Mysql表的同一行

mysql - SQL 将项目连接和分组为数组

php - 如何在 Laravel 4 中获取通过 POST 发送的文件的内容?