Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Fatal error: Uncaught Error: Class "Doctrine\Common\Annotations\AnnotationRegistry"

Olá, ao abrir o teste.php da aula me retorna este erro

Fatal error:  Uncaught Error: Class "Doctrine\Common\Annotations\AnnotationRegistry" not found in C:\xampp\htdocs\Alura\9 - Doctrine ORM Acesse o banco com mapeamento objeto relacional\vendor\doctrine\orm\lib\Doctrine\ORM\Configuration.php:165
Stack trace:
#0 C:\xampp\htdocs\Alura\9 - Doctrine ORM Acesse o banco com mapeamento objeto relacional\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Setup.php(75): Doctrine\ORM\Configuration->newDefaultAnnotationDriver(Array, true)
#1 C:\xampp\htdocs\Alura\9 - Doctrine ORM Acesse o banco com mapeamento objeto relacional\src\Helper\EntityManagerFactory.php(20): Doctrine\ORM\Tools\Setup::createAnnotationMetadataConfiguration(Array, true)
#2 C:\xampp\htdocs\Alura\9 - Doctrine ORM Acesse o banco com mapeamento objeto relacional\teste.php(10): Alura\Doctrine\Helper\EntityManagerFactory->getEntityManager()
#3 {main}
  thrown in C:\xampp\htdocs\Alura\9 - Doctrine ORM Acesse o banco com mapeamento objeto relacional\vendor\doctrine\orm\lib\Doctrine\ORM\Configuration.php on line 165

Copiei o código do professor e colei por cima do meu, mas não encontrei diferenças, alguém poderia me auxiliar?

Teste.php

<?php

use Alura\Doctrine\Helper\EntityManagerFactory;

require_once __DIR__ . '/vendor/autoload.php';

echo "<pre>";

$entityManagerFactory = new EntityManagerFactory();
$entityManager = $entityManagerFactory->getEntityManager();

var_dump($entityManager->getConnection());

EntityManagerFactory.php

<?php

namespace Alura\Doctrine\Helper;

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

/**
 * @return EntityMangerInterface
 * @throws \Doctrine\ORM\ORMException
 */
class EntityManagerFactory
{
    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
solução!

Consegui resolver com:

composer require doctrine/annotations
composer require symfony/cache

Tive exatamente o mesmo problema. Obrigado por compartilhar a solução!

Fiz um pequeno manual para poder refazer o curso e não esquecer de nenhum comando:

<?php
//Instalação de dependências
#composer require doctrine/orm symfony/cache doctrine/annotations doctrine/migrations

//Alterar o arqivo composer.json
/*
{
    },
        "autoload": {
            "psr-4": {
                "Alura\\Doctrine\\": "src"
            }
        }
}
*/

//Atualiza o arquivo para ler o psr-4
#composer dumpautoload


//Para testar uma entidade: 
#vendor\bin\doctrine.bat orm:mapping:describe Aluno

/*
Cria a BD:
vendor\bin\doctrine.bat orm:schema-tool:create
Atualiza BD: (Não utilizar, pouco versátil, quando atualizar a BD com vários membros na equipe, é mais difícil todos se informarem sobre)
vendor\bin\doctrine.bat orm:schema-tool:upgrade
*/


migrations.php{
    https://www.doctrine-project.org/projects/doctrine-migrations/en/3.3/reference/configuration.html

return [
    'table_storage' => [
        'table_name' => 'doctrine_migration_versions',
        'version_column_name' => 'version',
        'version_column_length' => 1024,
        'executed_at_column_name' => 'executed_at',
        'execution_time_column_name' => 'execution_time',
    ],

    'migrations_paths' => [
        'MyProject\Migrations' => '/data/doctrine/migrations/lib/MyProject/Migrations',
        'MyProject\Component\Migrations' => './Component/MyProject/Migrations',
    ],

    'all_or_nothing' => true,
    'transactional' => true,
    'check_database_platform' => true,
    'organize_migrations' => 'none',
    'connection' => null,
    'em' => null,
];
}

vendor\bin\doctrine-migrations

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software