微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Doctrine Symfony 从关系对象中获取多个对象列和多个列

如何解决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,"contract": {
      "contract_id": 5,"type": 2
  }
}

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

解决方法

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

我看到有两个选项:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。