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,
"payStatus": 2,
"contract": {
"contract_id": 5,
"type": 2
}
}
如果有任何帮助,我将不胜感激!
解决方案
当您选择多个标量字段时,学说总是返回包含所有“列”的平面数组。
我看到有两个选项:
- 您可以保存
$query->getQuery()->getResult()
在查询方法中,自己映射并返回映射结果。 - 如果要将其映射到某些实体,可以使用“本机查询”和“结果集映射”,那么您可以在结果中包含嵌套对象,同时完全控制映射。 https://www.doctrine-project.org/projects/doctrine-orm/en/2.8/reference/native-sql.html 但是,在惯用的学说方式中,您应该尽可能避免使用本地查询。
推荐阅读
- git - Git 项目显示不同分支的独立文件夹结构
- sql-server - SQL Server 查询以查找存在于另一个表中的多行
- javascript - 使用 Discord API 在给定用户 ID 的情况下发送私人消息
- django - Django 无法返回基于类的视图用户 ID
- python - 具有二进制图像数据集的变分自动编码器中的图像生成
- clojure - 如何正确设置 shadow-cljs 以进行热重载?
- c++ - C++:输出中不需要的字符
- google-data-studio - 在 Google Data Studio 中合并三列文本数据
- r - A %*% B 中的错误:参数不一致
- python - For循环和while循环的区别?