0

Doctrine2.3およびPostgreSQLとスペースおよび大文字のフィールド/テーブル名に問題がある

例:(はい、これからの移行に取り組んでいます)

SELECT "Field Name"
FROM "Table Name"

また、2つの形式が混在しています

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

doctrineを使用すると、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自体です。

更新これは、doctrine2の最新バージョンで修正された可能性があります。受け入れられない文字を置き換えるようになりました。

于 2013-08-20T22:38:45.563 に答える