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;
我从 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;