Primeiro mudei os nome das a, t, c para aluno, telefones, cursos na DQL no arquivo AlunoRepository.php
<?php
namespace Prime\Doctrine\Repository;
use Doctrine\ORM\EntityRepository;
use Prime\Doctrine\Entity\Aluno;
class AlunoRepository extends EntityRepository
{
public function buscaCursoPorAluno()
{
$calsseAluno = Aluno::class;
$entityManager = $this->getEntityManager();
$dql = "SELECT aluno, telefones, cursos FROM $calsseAluno aluno JOIN aluno.telefones telefones JOIN aluno.cursos cursos";
$query = $entityManager->createQuery($dql);
return $query->getResult();
}
}
Depois no arquivo relatorio-cursos-por-aluno-repository.php eu simplesmente adicionei um comentário em cima da variavel $alunoRepository
/**@var AlunoRepository $alunoRepository */
$alunoRepository = $entityManager->getRepository(Aluno::class);
<?php
use Doctrine\DBAL\Logging\DebugStack;
use Prime\Doctrine\Entity\Aluno;
use Prime\Doctrine\Entity\Phone;
use Prime\Doctrine\Helper\EntityManagerFactory;
use Prime\Doctrine\Repository\AlunoRepository;
require_once '__DIR__' . '/../vendor/autoload.php';
$entityManagetFactory = new EntityManagerFactory();
$entityManager = $entityManagetFactory->getEntityManager();
/**@var AlunoRepository $alunoRepository */
$alunoRepository = $entityManager->getRepository(Aluno::class);
$debugStack = new DebugStack();
$entityManager->getConfiguration()->setSQLLogger($debugStack);
// $calsseAluno = Aluno::class;
// $dql = "SELECT aluno, telefones, cursos FROM $calsseAluno aluno JOIN aluno.telefones telefones JOIN aluno.cursos cursos";
// $query = $entityManager->createQuery($dql);
/**@var Aluno[] $alunos */
$alunos = $alunoRepository->buscaCursoPorAluno();
/**@var Aluno $aluno */
foreach ($alunos as $aluno) {
$telefones = $aluno->listPhones()->map(function (Phone $phone) {
return $phone->getNumber();
})->toArray();
echo "ID: {$aluno->getId()}\n";
echo "Nome: {$aluno->getNome()}\n";
echo "Telefones: " . implode(", ", $telefones) . "\n\n";
$cursos = $aluno->getCursos();
foreach($cursos as $curso) {
echo "\tID Curso: {$curso->getId()}";
echo "\tID Nome: {$curso->getNome()}\n";
}
echo "\n";
}
print_r($debugStack);