7
respostas

erro ao rodar o doctrine.bat

creatHelperSet está deprecated, pesquisei para ver se encontrava uma forma de resolver, mas não consegui achar nada que solucionasse o problema.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E quando rodo o comando php vendor\bin\doctrine.bat recebo o seguinte resultado Insira aqui a descrição dessa imagem para ajudar na acessibilidade

como posso solucionar esse problema?

7 respostas

Consegui, resolver o problema com o creatHelperSet(), acessando essa URL https://github.com/mickaelandrieu/doctrine2/blob/master/lib/Doctrine/ORM/Tools/Console/ConsoleRunner.php copiando o código e substituindo o código existente na classe consoleRunner pelo código fornecido na URL.

O getEntityManager solicitou usar o try catch

try {
    $entityManager = $entityManagerFactory->getEntityManager();
} catch (ORMException $e) {
}

que me trouxe o ORMException deprecate, também consegui resolver acessando a URL https://github.com/webmozart/doctrine-orm/blob/master/lib/Doctrine/ORM/ORMException.php copiando o código e substituindo o código existente na classe ORMException pelo código fornecido na URL.

Porém agora o erro mudou.

PHP Fatal error:  Uncaught Error: Class "Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper" not found in C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Console\ConsoleRunner.php:27
Stack trace:
#0 C:\xampp\htdocs\PHP-Alura\I-Doctrine\cli-config.php(18): Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet(Object(Doctrine\ORM\EntityManager))
#1 C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\doctrine\orm\bin\doctrine.php(51): require('C:\\xampp\\htdocs...')
#2 C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\doctrine\orm\bin\doctrine(4): include('C:\\xampp\\htdocs...')
#3 C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\bin\doctrine(120): include('C:\\xampp\\htdocs...')
#4 {main}
  thrown in C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Console\ConsoleRunner.php on line 27

Fatal error: Uncaught Error: Class "Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper" not found in C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Console\ConsoleRunner.php:27
Stack trace:
#0 C:\xampp\htdocs\PHP-Alura\I-Doctrine\cli-config.php(18): Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet(Object(Doctrine\ORM\EntityManager))
#1 C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\doctrine\orm\bin\doctrine.php(51): require('C:\\xampp\\htdocs...')
#2 C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\doctrine\orm\bin\doctrine(4): include('C:\\xampp\\htdocs...')
#3 C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\bin\doctrine(120): include('C:\\xampp\\htdocs...')
#4 {main}
  thrown in C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Console\ConsoleRunner.php on line 27

Sigo na luta kkkkkk, estive lendo os fóruns, buscando soluções e consegui avançar um pouco. Mas ainda tenho um erro no meu código que agora é:

Fatal error: Uncaught Error: Undefined constant "doctrine" in C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\doctrine\orm\bin\doctrine.php:28
Stack trace:
#0 C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\doctrine\orm\bin\doctrine(4): include()
#1 C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\bin\doctrine(120): include('C:\\xampp\\htdocs...')
#2 {main}
  thrown in C:\xampp\htdocs\PHP-Alura\I-Doctrine\vendor\doctrine\orm\bin\doctrine.php on line 28

Seguem os includes que o erro referencia

#0 vendor\doctrine\orm\bin\doctrine

#!/usr/bin/env php
<?php

include __DIR__ . '/doctrine.php';

#2 vendor\doctrine\orm\bin\doctrine.php

<?php

use Symfony\Component\Console\Helper\HelperSet;
use Doctrine\ORM\Tools\Console\ConsoleRunner;

fwrite(
    STDERR,
    '[Warning] The use of this script is discouraged. See'
    . ' https://www.doctrine-project.org/projects/doctrine-orm/en/current/reference/tools.html#doctrine-console'
    . ' for instructions on bootstrapping the console runner.'
    . PHP_EOL
);

echo PHP_EOL . PHP_EOL;

$autoloadFiles = [
    __DIR__ . '/../vendor/autoload.php',
    __DIR__ . '/../../../autoload.php'
];

foreach ($autoloadFiles as $autoloadFile) {
    if (file_exists($autoloadFile)) {
        require_once $autoloadFile;
        break;
    }
}

$directories = [getcwd(), doctrine . phpgetcwd() . 'config']; // Essa é a linha 28 que o erro referencia

$configFile = null;
foreach ($directories as $directory) {
    $configFile = $directory . DIRECTORY_SEPARATOR . 'cli-config.php';

    if (file_exists($configFile)) {
        break;
    }
}

if ( ! file_exists($configFile)) {
    ConsoleRunner::printCliConfigTemplate();
    exit(1);
}

if ( ! is_readable($configFile)) {
    echo 'Configuration file [' . $configFile . '] does not have read permission.' . "\n";
    exit(1);
}

$commands = [];

$helperSet = require $configFile;

if ( ! ($helperSet instanceof HelperSet)) {
    foreach ($GLOBALS as $helperSetCandidate) {
        if ($helperSetCandidate instanceof HelperSet) {
            $helperSet = $helperSetCandidate;
            break;
        }
    }
}

ConsoleRunner::run($helperSet, $commands);

#1 vendor\bin\doctrine

include __DIR__ . "/../doctrine/orm/bin/doctrine";

Rodrigo, vamos por partes. Vamos começar com sua dúvida original.

O aviso sobre o método creatHelperSet não é um erro. Há um novo curso de Doctrine já gravado e deve ser lançado em breve. Nesse curso você vai entender essa mensagem.

Ao invés de executar vendor\bin\doctrine.bat, execute php vendor\bin\doctrine (com o código original, sem suas mudanças descritas aqui).

Criei um novo diretório para baixar o orm novamente e poder voltar os códigos dos arquivos que eu havia editado. voltei o código do arquivo cli-config para o código original.

Continua aparecendo a mesma mensagem. quando chamo o php vendor\bin\doctrine no cmd

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Beleza, Rodrigo. Você pode compartilhar comigo o projeto pra eu baixar aqui e entender o que está havendo?

Recomecei Vinicius, refiz tudo de novo da forma como vc fez e ainda tenho o mesmo retorno...

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Segue o link do github com o projeto... https://github.com/rbmatos/doctrine.git

Rodrigo, eu só apaguei a pasta vendor (que jamais deve ser versionada) e rodei o composer update. Com isso, funcionou.