2013-04-10 52 views
2

我正在使用Doctrine和Zend Framework 2.當我使用「Doctrine partials」時,我不知道如何獲取實體的外鍵。我也使用查詢生成器,我想返回數組。如何從Doctrine中的部分實體獲取外鍵?

在我使用之前:IDENTITY(e.variable),但現在當我使用partial我有這樣的代碼:partial e.{id, name...}。而且我不知道在哪裏以及如何獲得外鍵。

如果我會用e.{id, name}, IDENTITY(e.variable)然後我得到的外鍵,但它是不一樣的陣列的一部分:

array (size=2) 
    0 => 
    array (size=2) 
     'id' => int 1 
     'name' => string 'Test' (length=4) 
    'countryId' => string 'en' (length=2) 

,但我想獲得:

array (size=2) 
    0 => 
    array (size=2) 
     'id' => int 1 
     'name' => string 'Test' (length=4) 
     'countryId' => string 'en' (length=2) 

我也知道HINT_INCLUDE_META_COLUMNS但這種解決方案適用於所有外鍵,然後我無法決定我想選擇哪一個,我想變得更加靈活。

回答

2

我猜你已經解決了這個問題,但我從谷歌搜索來對類似的東西,並決定分享我的經驗。

爲了得到就像你使用的是SQL,學說建議使用局部對象,平面呈長方形的數據集。如果你想包括外鍵太結果集,只是下降的部分語法和直接列出列:

SELECT e.id, e.name, IDENTITY(e.country) as countryId FROM MyEntity e ... 

只要確保你使用getArrayResult方法來檢索您的明文數據陣列。

http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html#array-hydration

1

似乎沒有辦法做到這一點,因爲根據http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html#select-expressions「部分」僅接受「SimpleStateField」。

所以必須加入「C國」,並選擇「局部溫度。(編號)」。

+0

這就是提問者所要求的。它創建一個只有一個項目「id」的子數組「country」。我個人認爲'HINT_INCLUDE_META_COLUMNS'更快,因爲它可以節省一些水分。 – flu 2015-02-03 19:03:29

相關問題