2011-05-18 50 views
1

使用Doctrine 2.主義DQL保留字作爲實體名稱

我有所謂的「大小」的實體,我試圖形成一些DQL(使用QueryBuilder的)拉從數據庫中這些實體。

它看起來像「尺寸」是一個保留字 http://www.doctrine-project.org/docs/orm/2.0/en/reference/dql-doctrine-query-language.html#id3

我無法找到一個方法來逃避實體名稱(我試過反引號和雙引號)

$dql = "SELECT product p join p.size size"; 

執行以上結果:

它看起來像手冊談論逃避保留字 - 它是指col umn和表名。任何人都可以對此有所瞭解嗎?是否不可能使用保留(在DQL中)作爲實體名稱?

謝謝

+0

你的註釋在實體中的表名是什麼樣的?我記得之前看到的關於必須在表名稱周圍使用雙引號保留字的內容。 – 2011-05-18 14:28:44

+0

我有一個[類似的問題](http://stackoverflow.com/questions/6000622/how-to-order-by-count-in-doctrine-2)。最簡單的方法就是使用psize這樣的詞。 – Tjorriemorrie 2011-05-19 06:10:11

+0

@Jeremy Hicks我的表名不是'大小',所以我沒有這個問題(我的表有一個名稱空間在他們面前) – calumbrodie 2011-05-19 09:55:34

回答

1

使用別名我能夠克服這個問題。

$dql = "SELECT p, sizealias FROM Product p JOIN p.size sizealias"; 

我沒有使用直接的DQL,而是使用queryBuilder代替上述解決方案。

$qb->select('p, sizealias') 
    ->from('Product', 'p') 
    ->join('p.size', 'sizealias');