O debugstack não está funcionando, acredito que uma das interfaces não está mais sendo utilizada por essa nova versão do doctrine, mas não sei como resolver :(
Tem um post no fórum aonde o autor não colocou toda a situação, então aquele post ficou sem solução.
Meu arquivo relatorio-cursos-por-aluno.php
<?php
use Alura\Doctrine\Entity\Aluno;
use Alura\Doctrine\Entity\Telefone;
use Alura\Doctrine\Helper\EntityManagerFactory;
use Doctrine\DBAL\Logging\DebugStack;
require_once __DIR__ . '/../vendor/autoload.php';
$entityManagerFactory = new EntityManagerFactory();
$entityManager = $entityManagerFactory->getEntityManager();
$alunosRepository = $entityManager->getRepository(Aluno::class);
/**
* @var Aluno[] $alunos
*/
$alunos = $alunosRepository->findAll();
$entityManager->getConfiguration()->setSQLLogger($debugStack);
$debugStack = new DebugStack();
foreach ($alunos as $aluno) {
$telefones = $aluno
->getTelefones()
->map(function (Telefone $telefone) {
return $telefone->getNumero();
})->toArray();
echo "ID: {$aluno->getId()}\n";
echo "Nome: {$aluno->getNome()}\n";
echo "Telefones: " . implode(',', $telefones) . PHP_EOL;
$cursos = $aluno->getCursos();
foreach($cursos as $curso){
echo "\tID Curso: {$curso->getId()}\n";
echo "\tNome Curso: {$curso->getNome()}\n";
echo "\n";
}
echo "\n";
}
print_r($debugStack);