3
respostas

DebugStack não listou comandos SQL

Embora esteja funcionando corretamente a pesquisa e a classe "EntityManagerFactory" esteja com "isDevMode: true", não mostrou os comandos SQL na execução do "relatorio-cursos-por-aluno".

Doctrine\DBAL\Logging\DebugStack Object ( [queries] => Array ( )

[enabled] => 1
[start] =>
[currentQuery] => 0

)

EntityManagerFactory:

<?php

namespace Alura\Doctrine\Helper;

use Doctrine\ORM\EntityManager; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\ORMException; use Doctrine\ORM\Tools\Setup;

class EntityManagerFactory { /**

 * @return EntityManagerInterface
 * @throws ORMException
 */
public function getEntityManager(): EntityManagerInterface
{
    $rootDir = __DIR__ . '/../..';
    $config = Setup::createAnnotationMetadataConfiguration(
        [$rootDir . '/src'],
        true
    );
    $connection = [
        'driver' => 'pdo_sqlite',
        'path' => $rootDir . '/var/data/banco.sqlite'
    ];
    return EntityManager::create($connection, $config);
}

}

3 respostas

Nelson, como está o código do comando que você está executando?

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

$debugStack = new DebugStack(); $entityManager->getConfiguration()->getSQLLogger($debugStack);

/** @var Aluno[] $alunos */ $alunos = $alunosRepository->findAll();

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 "\tCurso: {$curso->getNome()}\n";
    echo "\n";
}

}

echo "\n"; foreach ($debugStack->queries as $queryInfo) { echo $queryInfo['sql'] . "\n"; } print_r($debugStack);

Nelson, você pode disponibilizar todo o seu código no GitHub pra eu testar aqui, por favor? Batendo o olho, parece tudo certo.

PS.: Quando for compartilhar código aqui no fórum, coloque entre 3 crases (`) :-D

Assim o código fica formatado

tipo assim