0
respostas

Interface SQLLoger está deprecated no doctrine 3

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.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade 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);