0

Doctrine 2.3 和 PostgreSQL 的空格和大写字段/表名称存在问题

示例:(是的,我们正在努力摆脱这种情况)

SELECT "Field Name"
FROM "Table Name"

我们也有两种格式的混合

SELECT "Field Name", another_field_name
FROM "Table Name", another_table_name

使用学说时,我得到了 PDOException。查看错误时,我发现字段/表(名称)周围没有双引号,具有大写字母和空格。

有解决办法吗?解决方法?

这是 Doctrine 生成的示例

SELECT t0.TheId AS theid1, t0.Name AS name2, t0.User AS user3
FROM The Table t0 
WHERE t0.TheId = 1234

这就是我需要的方式

SELECT t0."TheId" AS theid1, t0."Name" AS name2, t0."User" AS user3
FROM "The Table" t0 
WHERE t0."TheId" = 1234
4

2 回答 2

5

您可能需要使用反引号让 Doctrine 知道它应该被引用:引用保留字。例如:

<?php
/** @Column(name="`number`", type="integer") */
private $number;
于 2012-12-10T19:42:36.640 回答
-1

不幸的是,接受的答案在目前的情况下不起作用。反引号将不起作用,因为原则查询中的每一列都通过使用带有附加标识符的小写名称来获取别名。这个别名中会有空格,因此在传递给 postgres 时会产生 sql 错误。

唯一可以纠正的方法是在生成查询时在 Doctrine 本身中。

更新似乎这可能已在最新版本的学说2中得到纠正。它现在替换不可接受的字符。

于 2013-08-20T22:38:45.563 回答