我正在使用Doctrine和Zend Framework 2.当我使用“Doctrine partials”时,我不知道如何为该实体获取外键。我还使用查询构建器,我想返回数组。
在我使用之前: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
但这个解决方案适用于所有外键,然后我无法决定选择哪一个,我希望更灵活。
答案 0 :(得分:2)
我猜你已经解决了这个问题,但我来自谷歌搜索类似的东西,并决定分享我的经验。
为了获得与使用SQL一样的扁平矩形数据集,Doctrine建议使用部分对象。如果要在结果集中也包含外键,只需删除部分语法并直接列出列:
SELECT e.id, e.name, IDENTITY(e.country) as countryId FROM MyEntity e ...
请确保使用getArrayResult
方法检索纯数据数组。
答案 1 :(得分:1)
似乎没有办法做到这一点,因为根据http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html#select-expressions'partial'只接受'SimpleStateField'。
所以必须加入“Country c”并选择“partial c。{id}”。