【发布时间】:2018-04-26 15:52:52
【问题描述】:
我有一个查询,它从一个表中获取一些信息 AND 从另一个表中获取相关对象的计数。我无法用 DQL 表达它,所以它会返回一个 平面数组。
此示例获取学校、学校名称和每个学校的学生人数:
$qB = $this->createQueryBuilder('school')
$qB->leftJoin('school.students', 'students');
$qB->select([
'partial school.{id, name}',
'count(students) AS number_students',
]);
$qB->groupBy('school');
$qB->getQuery()->getResult();
我期待它返回:
[
[id => 1, 'name' => 'School A', 'number_students' => 5],
[id => 2, 'name' => 'School B', 'number_students' => 3],
]
但我最终得到了这个:
[
[0 => [id => 1, 'name' => 'School A'], 'number_students' => 5],
[0 => [id => 2, 'name' => 'School B'], 'number_students' => 3],
]
作为一种解决方法,可以使用$qB->getQuery()->getScalarResult(),但这会转换变量名称(例如,实体变量名称schoolName 然后转换为数据库中的列标题school_name),这意味着我会必须重新映射字段。
这可能与 Doctrine 对待实体的方式有关。这是示例的学校实体:
class School {
protected $id;
protected $name;
protected $students;
}
【问题讨论】:
标签: php doctrine-orm dql doctrine-query