laravel - 使用 Laravel 的 eloquent 查询和相同的关联 SQL 查询(使用 toSql() 方法获得)不同的结果
问题描述
我在 Laravel Eloquent 中有这个查询:
$measures = Measure::groupBy('time')
->selectRaw('time, sum("delta") as sum_delta, sum("redistributed") as sum_redistr')
->where('operation_id', 'ACC0000001')
->where('time', '>', '2020-05-09 00:00')
->where('time', '<', '2020-05-10 00:00')
->where('source', 'source1')
->where('conso_prod', 'Conso')
->get()
当我使用函数进行调试toSql()
,然后将其粘贴到 pgAdmin 中时,我得到了正确的结果。
select time, sum("delta") as sum_delta, sum("redistributed") as sum_redistr from "measures"
where "operation_id" = 'ACC0000001'
and "time" > '2020-05-09' and "time" < '2020-05-10' and "source" = 'source1' and "conso_prod" = 'Conso' group by "time"
我每 30m 有一个结果,这是正确的。
但是当我使用 eloquent 时,我的行数相同,但所有time
字段都相同:
"2020-05-09 00:00"
而不是递增。
我不明白为什么?我使用带有 TimescaleDB 扩展的 PostgreSQL。
解决方案
在我的模型中,我将时间投入到date
而不是datetime
protected $casts = [
'time' => 'date'
];
我将其更改为:
protected $casts = [
'time' => 'datetime'
];
它奏效了。
如果有人像我一样失败,我会放在那里!还是要谢谢你的帮助
推荐阅读
- laravel - 我无法访问 Livewire 中关系集合的属性
- java - Java ArrayList 独立拷贝
- kubectl - 部署 onprem Kubernetes 需要 15 分钟
- javascript - Java过滤字符串值用逗号分隔
- java - AWT_EVENT-0 队列错误 - 空点异常
- javascript - 从邮递员发送一个 data.json 文件到 node.js
- xcode - React Native App 抛出 domain=FBSOpenApplicationServiceErrorDomain, code=3 错误
- algorithm - 如何判断一个递推方程是否属于主定理的情况一或二
- javascript - 为什么我们在 react js 命令中使用 --save
- ios - 'weak' 可能只适用于类和类绑定协议类型,而不适用于 '(ViewController) -> () -> ViewController'