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

PHP Fatal error: Uncaught Error: Unknown named parameter $TargetEntity

Olá, alguém poderia me auxiliar? estou tendo este erro, mas o targetEntity está digitado correto, baixei os arquivos do professor, refiz a aula inteira mas o erro persiste.

Classe Aluno:

<?php

namespace Alura\Doctrine\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;

/**
 * @Entity
 */
class Aluno
{
    /**
     * @Id
     * @GeneratedValue
     * @Column(type="integer")
     */
    private $id;
    /**
     * @Column(type="string")
     */
    private $nome;
    /**
     * @OneToMany(targetEntity="Telefone", mappedBy="aluno", cascade={"remove", "persist"})
     */
    private $telefones;
    /**
     * @ManyToMany(targetEntity="Curso", mappedBy="alunos")
     */
    private $cursos;

    public function __construct()
    {
        $this->telefones = new ArrayCollection();
        $this->cursos = new ArrayCollection();
    }

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

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

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

    public function addTelefone(Telefone $telefone)
    {
        $this->telefones->add($telefone);
        $telefone->setAluno($this);

        return $this;
    }

    public function getTelefones(): Collection
    {
        return $this->telefones;
    }

    public function addCurso(Curso $curso): self
    {
        if ($this->cursos->contains($curso)) :
            return $this;
        endif;

        //Adiciono o curso ao aluno.
        $this->cursos->add($curso);
        //Adiciono o Aluno ao curso, criando um relacionamento bi direcional.
        $curso->addAluno($this);
        return $this;
    }

    public function getCursos(): Collection
    {
        return $this->cursos;
    }
}

Classe Curso

<?php

namespace Alura\Doctrine\Entity;

use Alura\Doctrine\Entity\Aluno;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;

/**
 * @Entity
 */
class Curso
{
    /**
     * @Id
     * @GeneratedValue
     * @Column(type="integer")
     */
    private int $id;
    /**
     * @Colum(type="string")
     */
    private string $name;
    /**
     * @ManyToMany(TargetEntity="Aluno", inversedBy="cursos")
     */
    private Collection $alunos;

    public function __construct()
    {
        $this->alunos = new ArrayCollection();
    }

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

    public function getName(): string
    {
        return $this->name;
    }

    public function setName(string $name): self
    {
        $this->name = $name;
        return $this;
    }

    public function addAluno(Aluno $aluno): self
    {
        if ($this->alunos->contains($aluno)) :
            return $this;
        endif;

        $this->alunos->add($aluno);
        $aluno->addCurso($this);
        return $this;
    }

    public function getAlunos(): Collection
    {
        return $this->alunos;
    }
}

Classe Telefone

<?php

namespace Alura\Doctrine\Entity;

/**
 * @Entity
 */
class Telefone
{
    /**
     * @Id
     * @GeneratedValue
     * @Column(type="integer")
     */
    private $id;
    /**
     * @Column(type="string")
     */
    private $numero;
    /**
     * @ManyToOne(targetEntity="Aluno")
     */
    private $aluno;

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

    public function setId(int $id): self
    {
        $this->id = $id;
        return $this;
    }

    public function getNumero(): string
    {
        return $this->numero;
    }

    public function setNumero(string $numero): self
    {
        $this->numero = $numero;
        return $this;
    }

    public function getAluno(): Aluno
    {
        return $this->aluno;
    }

    public function setAluno(Aluno $aluno): self
    {
        $this->aluno = $aluno;
        return $this;
    }
}

Agradeço toda a ajuda de antemão ^^

2 respostas
solução!

Na classe Curso, na relação ManyToMany para a classe Aluno está escrito TargetEntity, com a primeira letra em maiúsculo. Não sei se essa é a causa, mas arrume para targetEntity e veja se o erro continua.

Muito obrigado pelo auxilio Marcelo, tentei mas não resolveu, refiz todo o código, e refiz desde a primeira aula... resolveu, mas não consegui encontrar o que era =Z Mas agradeço ^^