【发布时间】:2023-03-30 17:12:02
【问题描述】:
我要执行以下 SQL 查询:
SELECT date, COUNT(id_customers)
FROM event
WHERE event_id = 3
GROUP BY date
当我在我的数据库中尝试这个查询时,它运行良好。但在我的代码中,我得到了一个我无法解决的错误。
我使用 symfony2 和 orm pomm。它是 Postgresql。
这是我的代码:
$sql = "SELECT e.date, COUNT(id_customers) FROM event e WHERE event_id = $* GROUP BY e.date";
return $this->query($sql, [$eventId])->extract();
这是错误:
request.CRITICAL:未捕获的 PHP 异常 InvalidArgumentException:
“没有这样的字段 'id'。现有字段是 {date, count}”
在 /home/vagrant/sourcefiles/vendor/pomm-project/model-manager/sources/lib/Model/FlexibleEntity/FlexibleContainer.php 第 64 行
{"exception":" [object] (InvalidArgumentException(code: 0): No such field 'id'.
现有字段为 {date, count}
在 /home/vagrant/sourcefiles/vendor/pomm-project/model-manager/sources/lib/Model/FlexibleEntity/FlexibleContainer.php:64)"} []
所以我尝试在我的选择中包含 id,但出现此错误:
request.CRITICAL:未捕获的 PHP 异常
PommProject\Foundation\Exception\SqlException:“
SQL 错误状态 '42803' [ERROR] ==== 错误:列“e.id”必须出现在 GROUP BY 子句中或用于聚合函数第 1 行:SELECT e.id, e.date, COUNT(id_customers ) FROM 事件 e WHERE ... ^==== «PREPARE === SELECT e.id, e.date, COUNT(id_customers) FROM event e WHERE event_id = $1 GROUP BY e.date ===»。”在 /home/vagrant/sourcefiles /vendor/pomm-project/foundation/sources/lib/Session/Connection.php 第 327 行 {"exception":"[object] (PommProject\Foundation\Exception\SqlException(code: 0): \nSQL 错误状态 '42803' [错误]\n====\n错误:列 \"e.id\" 必须出现在 GROUP BY 子句中或用于聚合函数\n第 1 行:SELECT e.id, e.date, COUNT(id_customers ) FROM event e WHERE ...\n ^\n\n====\n«PREPARE ===\nSELECT e.id, e.date, COUNT(id_customers) FROM event e WHERE event_id = $1 GROUP BY e .date\n ===». at /home/vagrant/sourcefiles/vendor/pomm-project/foundation/sources/lib/Session/Connection.php:327)"} []
唯一有效的是当我在 group by 中有 id 时,但这不是我想要的结果。
有人可以解释一下为什么这在数据库中而不是在 php 中有效?
【问题讨论】:
标签: postgresql symfony pomm