对 Doctrine 2.3 和 PostgreSQL 有空格和大写的问题 字段/表名
示例:(是的,我们正在努力从中迁移)
SELECT "Field Name"
FROM "Table Name"
我们也有两种格式的混合
SELECT "Field Name", another_field_name
FROM "Table Name", another_table_name
当使用学说时,我得到了一个PDOException。查看错误时,我看到具有大写和空格的字段/表(名称)周围没有双引号。
有修复吗?解决方法?
这是教义正在产生的一个例子
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
您可能需要使用反引号让 Doctrine 知道应该引用它:引用保留字。例如:
<?php
/** @Column(name="`number`", type="integer") */
private $number;
不幸的是,接受的答案在目前的情况下不起作用。 反引号不起作用,因为原则查询中的每个列都通过使用带有附加标识符的小写名称来获取别名。此别名中将包含空格,因此在传递给 postgres 时会产生 sql 错误。
唯一可以纠正的方法是在生成查询时在 Doctrine 本身中。
更新 这似乎已在最新版本的 Doctrine2 中得到纠正。 它现在替换不可接受的字符。