Symfony 命令错误 "The target-entity..cannot be found in.."

Symfony cmd error "The target-entity..cannot be found in.."

我从 Symfony Framework 开始,我正在尝试建立 ManyToMany 关系。 但是当我尝试这个命令行时

php bin/console doctrine:schema:update

我收到此错误:

The target-entity C:\xampp\htdocs\symfony-tp\src\Entity\Competetence cannot be found in 'App\Entity\Stagiaire#competencies'.

Stagiaire.php

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\StagiaireRepository")
 */
class Stagiaire
{
    /**
     * @ORM\ManyToMany(targetEntity="C:\xampp\htdocs\symfony-tp\src\Entity\Competetence",cascade={"persist"})
     */
    private $competencies;

    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="datetime")
     */
    private $createdAt;

    /**
     * @ORM\Column(type="string", length=50)
     */
    private $name;

    /**
     * @ORM\Column(type="integer")
     */
    private $phone;

    /**
     * @ORM\Column(type="datetime")
     */
    private $birthday;
    /**
     * @var \Datetime
     */
    private $date;

    public function __construct()
    {
        $this->date = new \Datetime();
        $this->competencies = new ArrayCollection();
    }

    public function addCompetence(Competence $competence)
    {
        $this->$competence[] = $competence;

        return $this;
    }

    public function removeCompetence(Competence $competence)
    {
        $this->competencies->removeElement($competence);
    }

    public function getCompetencies()
    {
        return $this->competencies;
    }

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

    public function getCreatedAt(): ?\DateTimeInterface
    {
        return $this->createdAt;
    }

    public function setCreatedAt(\DateTimeInterface $createdAt): self
    {
        $this->createdAt = $createdAt;

        return $this;
    }

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

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

        return $this;
    }

    public function getPhone(): ?int
    {
        return $this->phone;
    }

    public function setPhone(int $phone): self
    {
        $this->phone = $phone;

        return $this;
    }

    public function getBirthday(): ?\DateTimeInterface
    {
        return $this->birthday;
    }

    public function setBirthday(\DateTimeInterface $birthday): self
    {
        $this->birthday = $birthday;

        return $this;
    }
}

Competence.php

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * @ORM\Entity(repositoryClass="App\Repository\CompetenceRepository")
 */
class Competence
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=50)
     */
    private $name;

    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;
    }
}

感谢您的帮助!

Stagiaire::$competencies 注释中,您需要提供 Competence 的完全限定 Class 名称,而不是计算机上的文件路径,即 App\Entity\Competence

所以这个:

    /**
     * @ORM\ManyToMany(targetEntity="C:\xampp\htdocs\symfony-tp\src\Entity\Competetence",cascade={"persist"})
     */
    private $competencies;

变为:

    /**
     * @ORM\ManyToMany(targetEntity="App\Entity\Competence",cascade={"persist"})
     */
    private $competencies;