大家好,我遇到了一个奇怪的问题,正在寻求帮助。
我使用的是laravel 7,我的一个查询显然正在缓存中,这是我要解释的代码:
这是我的一个控制器中非常简单的方法:
public function chartEstadosVoluntarios(){
$estados = DB::table("voluntarios")
->selectRaw("estado, count(*) as total")
->whereNotNull('estado')
->groupBy("estado")
->get();
return response()->json($estados,200);
}
如果我在chrome上点击路线,则结果为:
[
{
"estado": "Derivado al 147",
"total": 2
},
{
"estado": "Derivar a mesa de ayuda",
"total": 7
},
{
"estado": "Pendiente",
"total": 3
},
{
"estado": "Reasignar Adulto Mayor",
"total": 50
},
{
"estado": "Resolución logística 24hs",
"total": 4
},
{
"estado": "Resuelto",
"total": 119
}
]
但这是错误的,不是真正的结果,这是MySQL Workbench中相同查询的屏幕:
我在工作台和laravel中使用同一用户。 另一件事是,如果我稍微修改查询,那么我会得到正确的结果,例如:
$estados = DB::table("voluntarios")
->selectRaw("estado, count(*) as total, 'test'")//adding 'test' to select
->whereNotNull('estado')
->groupBy("estado")
->get();
然后我再次点击浏览器,结果是:
[
{
"estado": "Pendiente",
"total": 9687,
"test": "test"
},
{
"estado": "Resuelto",
"total": 16415,
"test": "test"
}
]
如果我返回修改,我会再次得到错误的结果。 所以,我真的不明白发生了什么,任何方向的感激。
编辑,从答案中添加了更多信息:
toSql()方法引发相同的查询(从浏览器粘贴的副本):
"select estado, count(*) as total from `voluntarios` where `estado` is not null group by `estado`";
在select中带有'test'的toSql()方法:
"select estado, count(*) as total, 'test' from `voluntarios` where `estado` is not null group by `estado`"
修补匠的结果相同:
从laravel v7.10.3降级到v7.6.2(我今天运行作曲家更新之前拥有的版本),但是问题仍然存在。
编辑2
发生奇怪的事情,我最近使用系统的另一部分来编辑表“ voluntarios”的“ estado”字段以查看发生了什么,现在查询抛出了正确的结果。就像编辑表格后已将某些内容解锁一样。 会是什么呢?我检查过用户没有未完成的交易。
先谢谢了。