2

我正在使用 Doctrine and 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但这个解决方案适用于所有外键,然后我无法决定我想选择哪个外键,我想要更灵活。

4

2 回答 2

3

我想你已经解决了这个问题,但我来自谷歌搜索类似的东西,并决定分享我的经验。

要像使用 SQL 一样获得平面矩形数据集,Doctrine 建议使用部分对象。如果您想在结果集中也包含外键,只需删除部分语法并直接列出列:

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

于 2013-06-13T07:29:23.447 回答
2

似乎没有办法做到这一点,因为根据http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html#select-expressions 'partial' 只接受 'SimpleStateField '。

所以必须加入“Country c”并选择“partial c.{id}”。

于 2014-02-06T20:57:49.257 回答