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

Erro ao executar ORM:INFO

Ao executar o comando ORM:INFO, ocorreu o seguinte erro:

In MappingException.php line 50:

  File mapping drivers must have a valid directory path, however the given path [1] seems to be incorrect!  

Classe Aluno:

<?php

namespace Alura\Doctrine\Entity;
/**
 * @Entity
 */
class Aluno
{
    /**
     * @Id
     * @GeneratedValue
     * @Column(type="integer")
     */
    private $id;
    /**
     * @Column(type="string")
     */
    private $nome;

    public function getNome() : string
    {
        return $this->nome;
    }

    public function setNome($nome) : self
    {
        $this->nome = $nome;

        return $this;
    }

    public function getId() : int
    {
        return $this->id;
    }
}

Classe EntityManagerFactory:

<?php

namespace Alura\Doctrine\Helper;

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

class EntityManagerFactory
{
    /**
     * @return EntityManagerInterface
     * @throws \Doctrine\ORM\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);
    }
}

Obs: Estou usando o Visual Studio Code, e a versão instalada do PHP é: 7.4.0

6 respostas
solução!

Erro já resolvido!

Como arrumou?

Fala, Edson, tudo certo? Neste caso, minha solução foi a seguinte:

Na classe EntityManagerFactory, no método getEntityManager, estava com o erro na função createAnnotationMetadataConfiguration.

$config = Setup::createAnnotationMetadataConfiguration([
            $rootDir . '/src',
            true
]);

O erro estava no primeiro parâmetro da função, então eu corrigi pra seguinte forma:

$config = Setup::createAnnotationMetadataConfiguration(
            [$rootDir . '/src'],
            true
);

Viu a diferença? No primeiro exemplo, que era o errado, eu estava passando os dois parâmetros dentro de um array, e na verdade apenas o primeiro parâmetro deve ser passado como array, o segundo, que indica se estamos no modo desenvolvimento, não.

Valeu. Eu tinha observado na aula que o primeiro argumento era um array que podia conter vários paths, mas eu também tinha colocado o true dentro dele.

Deu certo então? Cometemos o mesmo erro pelo jeito!

Deu certo sim. Muito obrigado!

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