首页 > 解决方案 > Doctrine Symfony 从关系对象中获取多个对象列和多个列

问题描述

朋友们!我想从数据库中获取我的对象的选定列,以及相关对象的选定列。但是当我执行查询时,我得到了数据,但相关对象没有转换为单独的数组,而是在主请求对象的通用数组中返回。

我的查询:

$query = $this->createQueryBuilder('i')
        ->select('i.id', 'i.payStatus', 'contract.id as contract_id', 'contract.type as type')
        ->join('i.contract', 'contract');
    return $query->getQuery()->getResult();

当前结果:

{
  "id": 56,
  "payStatus": 2,
  "contract_id": 5,
  "type": 2
}

预期结果:

{
  "id": 56,
  "payStatus": 2,
  "contract": {
      "contract_id": 5,
      "type": 2
  }
}

如果有任何帮助,我将不胜感激!

标签: symfonydoctrine-ormdoctrinedqldoctrine-query

解决方案


当您选择多个标量字段时,学说总是返回包含所有“列”的平面数组。

我看到有两个选项:

  • 您可以保存$query->getQuery()->getResult()在查询方法中,自己映射并返回映射结果。
  • 如果要将其映射到某些实体,可以使用“本机查询”和“结果集映射”,那么您可以在结果中包含嵌套对象,同时完全控制映射。 https://www.doctrine-project.org/projects/doctrine-orm/en/2.8/reference/native-sql.html 但是,在惯用的学说方式中,您应该尽可能避免使用本地查询。

推荐阅读