У меня есть запрос, который выбирает некоторую информацию из таблицы. И Количество связанных объектов из другой таблицы. У меня проблемы с выражением в 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
), что означает, что я бы придется заново переназначить поля.
Возможно, это связано с тем, как Учение относится к сущностям. Вот школьный объект примера:
class School {
protected $id;
protected $name;
protected $students;
}