0
respostas

consegui resolver o meu assim.

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);