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

Erros no Cli-config.php , no curso de DOCTRINE

Olá a todos,

estou com alguns erros aqui do curso introdutorio de php:

Estou usando o comando " php bin/doctrine.php" e ele está mostrando esse erro:

PHP Fatal error:  Uncaught TypeError: Doctrine\ORM\Tools\Console\EntityManagerProvider\SingleManagerProvider::__construct(): Argument #1 ($entityManager) must be of type Doctrine\ORM\EntityManagerInterface, null given, called in C:\xampp\htdocs\2612-doctrine\bin\doctrine.php on line 15 and defined in C:\xampp\htdocs\2612-doctrine\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Console\EntityManagerProvider\SingleManagerProvider.php:18

Meu doctrine.php está assim:
<?php

use Doctrine\ORM\Tools\Console\ConsoleRunner;
use Doctrine\ORM\Tools\Console\EntityManagerProvider\SingleManagerProvider;
//use Doctrine\ORM\Tools\Console\EntityManagerProvider\SingleManagerProvider;

// replace with path to your own project bootstrap file
requireonce DIR . '/../vendor/autoload.php';

// replace with mechanism to retrieve EntityManager in your app
$entityManager = \Alura\Doctrine\Helper\EntityManagerCreator::createEntityManager();


ConsoleRunner::run(
    new SingleManagerProvider($entityManager)
    //new SingleManagerProvider($entityManager)
);

preciso de ajuda. Poderiam me ajudar?

Aqui está o repositório git@github.com:tiagobrandao03/2612-doctrine.git

2 respostas

Oi, Tiago, como vai?

Pelo que você descreveu, parece que o erro está relacionado à criação do objeto EntityManager que está sendo passado como null para o SingleManagerProvider. Na aula de Entity Manager é feito uma configuração para usar o DBO do SQLite, esse Entity Manager é basicamente uma funcionalidade que gerencia as interações com o banco de dados, como se fosse o Sequelize que usamos no Javascript.

Portanto, para corrigir esse problema, o arquivo "src\Helpers\EntityManagerCreator.php" tem que ficar assim:

<?php

namespace Alura\Doctrine\Helper;

use Doctrine\ORM\EntityManager;
use Doctrine\ORM\ORMSetup;

class EntityManagerCreator
{
    public static function createEntityManager(): EntityManager
    {
        $config = ORMSetup::createAttributeMetadataConfiguration(
            [__DIR__ . "/src"],
            true
        );

        $conn = [
            'driver' => 'pdo_sqlite',
            'path' => __DIR__ . '/../../db.sqlite',
        ];

        return EntityManager::create($conn, $config);
    }
}

Após essa mudança, ao rodar php bin/doctrine.php vai mostrar corretamente os comandos do Doctrine.

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!
solução!

Oh meu caro! Muito obrigado pela analise, vai me ajudar muito em meus estudos. Estava aguardando analise do meu conteudo e isso vai me ajudar muito.