通过Eloquent获取具有条件的字段的总和

时间:2013-12-01 03:24:31

标签: 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论坛上的答案编写了这些查询。

2 个答案:

答案 0 :(得分:2)

那是因为你不能那样检查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')
);

答案 1 :(得分:1)

where函数中可用的运算符与query builder one's

相同
protected $operators = array(
    '=', '<', '>', '<=', '>=', '<>', '!=',
    'like', 'not like', 'between', 'ilike',
    '&', '|', '^', '<<', '>>',
);