我正在尝试获取所有时间和过去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论坛上的答案编写了这些查询。
答案 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',
'&', '|', '^', '<<', '>>',
);