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

Erro ao rodar o código atualizar nome

<?php

use Orm\Doctrine\Entity\Aluno;
use Orm\Doctrine\Helper\EntityManagerFactory;

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

$entityManagerFactory = new EntityManagerFactory();
$entityManager = $entityManagerFactory->getEntityManager();
$alunoRepository = $entityManager->getRepository(Aluno::class);

$id = $argv[1];
$novoNome = $argv[2];

$aluno = $alunoRepository->find($id);
$aluno->setNome($novoNome);

$entityManager->flush();

estou fazendo esse trecho de código, mas apresenta o seguinte erro:

PHP Warning: Undefined array key 1 in /home/desenvolvimento/Documentos/ORM/commands/atualizarNomeAluno.php on line 12 PHP Warning: Undefined array key 2 in /home/desenvolvimento/Documentos/ORM/commands/atualizarNomeAluno.php on line 13 PHP Fatal error: Uncaught Doctrine\ORM\Exception\MissingIdentifierField: The identifier id is missing for a query of Orm\Doctrine\Entity\Aluno in /home/desenvolvimento/Documentos/ORM/vendor/doctrine/orm/lib/Doctrine/ORM/Exception/MissingIdentifierField.php:13 Stack trace:

#0 /home/desenvolvimento/Documentos/ORM/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(457): Doctrine\ORM\Exception\MissingIdentifierField::fromFieldAndClass()

#1 /home/desenvolvimento/Documentos/ORM/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php(199): Doctrine\ORM\EntityManager->find()

#2 /home/desenvolvimento/Documentos/ORM/commands/atualizarNomeAluno.php(15): Doctrine\ORM\EntityRepository->find()

#3 {main} thrown in /home/desenvolvimento/Documentos/ORM/vendor/doctrine/orm/lib/Doctrine/ORM/Exception/MissingIdentifierField.php on line 13

5 respostas

Como você está executando o projeto?

Estou executando pelo terminal "desenvolvimento@desenvolvimento-ThinkCentre-M720s:~/Documentos/ORM/commands$ php atulizarNomeAluno.php " e agora apareceu esse erro: "PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20210902/pdo_sqlite (/usr/lib/php/20210902/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/pdo_sqlite.so (/usr/lib/php/20210902/pdo_sqlite.so: undefined symbol: php_pdo_unregister_driver)) in Unknown on line 0 Could not open input file: atulizarNomeAluno.php"

Eu fiz umas alterações no PHP.ini, comentei o ";Extesion=pdo_sqlite" , voltou da esse erro, parece ser um erro no Doctrine; o mais engraçado que o buscar alunos no banco de dados funciona;

desenvolvimento@desenvolvimento-ThinkCentre-M720s:~/Documentos/ORM/commands$ php atualizarNomeAluno.php PHP Warning: Undefined array key 1 in /home/desenvolvimento/Documentos/ORM/commands/atualizarNomeAluno.php on line 12 PHP Warning: Undefined array key 2 in /home/desenvolvimento/Documentos/ORM/commands/atualizarNomeAluno.php on line 13 PHP Fatal error: Uncaught Doctrine\ORM\Exception\MissingIdentifierField: The identifier id is missing for a query of Orm\Doctrine\Entity\Aluno in /home/desenvolvimento/Documentos/ORM/vendor/doctrine/orm/lib/Doctrine/ORM/Exception/MissingIdentifierField.php:13 Stack trace:

#0 /home/desenvolvimento/Documentos/ORM/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(457): Doctrine\ORM\Exception\MissingIdentifierField::fromFieldAndClass()

#1 /home/desenvolvimento/Documentos/ORM/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php(199): Doctrine\ORM\EntityManager->find()

#2 /home/desenvolvimento/Documentos/ORM/commands/atualizarNomeAluno.php(15): Doctrine\ORM\EntityRepository->find()

#3 {main} thrown in /home/desenvolvimento/Documentos/ORM/vendor/doctrine/orm/lib/Doctrine/ORM/Exception/MissingIdentifierField.php on line 13

solução!

Aldo, vamos por partes. Você está executando o comando sem passar os parâmetros na linha de comando.

$id = $argv[1];
$novoNome = $argv[2];

Essas linhas estão lendo os parâmetros que você deveria passar na linha de comando, mas não está passando.

De fato era esse o problema, eu estava esperando o terminal abrir uma entrada para eu inserir os argumentos, mas os argumentos são inserido na mesma linha de comando que executa o código, valeu Vinicius pela força!

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