Doctrine orm 在学说中如何从部分实体中获取外键?

Doctrine orm 在学说中如何从部分实体中获取外键?,doctrine-orm,doctrine,zend-framework2,Doctrine Orm,Doctrine,Zend Framework2,我使用的是条令和Zend框架2。当我使用“”时,我不知道如何获取实体的外键。我还使用了一个查询生成器,我想返回数组 以前我使用:IDENTITY(e.variable),但现在我使用的代码类似于:partial e.{id,name…}。我不知道在哪里,我应该用什么来获取外键 如果我将使用e.{id,name},IDENTITY(e.variable),那么我将获得外键,但它不是同一数组的一部分: array (size=2) 0 => array (size=2)

我使用的是条令和Zend框架2。当我使用“”时,我不知道如何获取实体的外键。我还使用了一个查询生成器,我想返回数组

以前我使用:
IDENTITY(e.variable)
,但现在我使用的代码类似于:
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\u INCLUDE\u META\u COLUMNS
,但这个解决方案适用于所有外键,因此我无法决定选择哪一个,我希望更加灵活。

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

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

SELECT e.id, e.name, IDENTITY(e.country) as countryId FROM MyEntity e ...
只需确保使用
getArrayResult
方法检索普通数据数组


似乎没有办法做到这一点,因为根据“partial”只接受“SimpleStateField”


因此,必须加入“国家c”并选择“部分c.{id}”。

这符合提问者的要求。它创建一个子数组
country
,其中只包含一个项目
id
。就我个人而言,我认为
HINT\u INCLUDE\u META\u COLUMNS
更快,因为它节省了一些时间。有没有办法在很多字段中选择一些字段,而不使用partial、with和addSelect语句。这可以工作,但包括主键,不允许使用标识(FK)=>$qb->select('partial H.{id,name}')->from('App\Entity\Host','H')->leftJoin('H.clusters','C')->addSelect('partial C.{id,name}');这不起作用=>$qb->select('H.name')->from('App\Entity\Host','H')->leftJoin('H.clusters','C')->addSelect('C.name');