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

Fatal erro ao tentar vincular aluno-curso

Olá não consegui entender direito o que esta acontecendo, mas não estou conseguindo gravar aluno-cuso.

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

use DoctrineORM\helper\EntityManagerFactory;
use DoctrineORM\entity\Curso;
use DoctrineORM\entity\Aluno;


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

$idAluno = $argv[1];
$idCurso = $argv[2];

$aluno = $entityManager->find(Aluno::class, $idAluno);
$curso = $entityManager->find(Curso::class, $idCurso);

$curso->setAluno($aluno);

$entityManager->flush();

Este código me retorna o seguinte FatalError.

PHP Fatal error:  Uncaught Error: Call to undefined method DoctrineORM\entity\Aluno::contains() in \src\entity\Curso.php:48
Stack trace:
#0 \src\entity\Aluno.php(88): DoctrineORM\entity\Curso->setAluno(Object(DoctrineORM\entity\Aluno))
#1 \src\entity\Curso.php(52): DoctrineORM\entity\Aluno->setCurso(Object(DoctrineORM\entity\Curso))
#2 \commands\Vincular-aluno-curso.php(16): DoctrineORM\entity\Curso->setAluno(Object(DoctrineORM\entity\Aluno))
#3 {main}
  thrown in \src\entity\Curso.php on line 48

O negocio estranho e quando seguro Ctrl e clico no meu metodo setAluno ele me joga pra interface ObjectManager nesse namespace Doctrine\Common\Persistence;

3 respostas

Fala, Rafael.

Me passa seu código do método setAluno?

Só algumas observações: Dá uma olhada na PSR-4, man. Lá você vai ver que é bem mais comum definir nossos namespaces com a primeira letra maiúscula.

;-)

solução!

Bom dia, achei aqui o erro, ontem acho que estava desgastado já, hoje pela manhã com a mente mais "relex" rs, encontrei o erro.

estava assim

$this->alunos = ($aluno);

depois mudei pra add($element), e tudo deu certo.

$this->alunos->add($aluno);

Quanto ao PSR-4, agr que notei que escrevi em caixa baixa, mas pode deixar vou trocar ja xD

Vlw.

Xol de boleta, Rafael. Bons estudos aí!

Vou marcar o tópico como solucionado aqui. Imaginei que fosse isso mesmo.

heheheh