我是新的Symfony 6,我有这个框架的问题。最近我得到了这个错误,但我不明白为什么我从命令行创建所有的数据库。
我的错误是:加载的类名和声明的类名之间的大小写不匹配:“应用程序\实体\标记”与“应用程序\实体\标记”。
在我的数据库中,所有的表都是用小写语法写的。在我插入与所有表的关系之前,一切都正常。
我尝试在我的实体中插入此代码以使用正确的语法,但它不工作。
Entity\Tag.php
#[ORM\Table(name: 'tag')]
有些人在我的数据库(MYSQL)中谈到这个参数,但我不知道这是否有影响:
表名小写=(0 1 2)
你有主意吗?
这是我的实体标记
<?php
namespace App\Entity;
use App\Repository\TagRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: TagRepository::class)]
class Tag
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\Column(length: 255)]
private ?string $nomtag = null;
#[ORM\ManyToOne(inversedBy: 'idcatetag')]
#[ORM\JoinColumn(nullable: false)]
private ?catetag $idcatetag = null;
#[ORM\ManyToMany(targetEntity: Mission::class, mappedBy: 'idtagmissionassign')]
private Collection $missions;
#[ORM\ManyToMany(targetEntity: Service::class, mappedBy: 'idtagserviceassign')]
private Collection $services;
public function __construct()
{
$this->missions = new ArrayCollection();
$this->services = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getNomtag(): ?string
{
return $this->nomtag;
}
public function setNomtag(string $nomtag): self
{
$this->nomtag = $nomtag;
return $this;
}
public function getIdcatetag(): ?catetag
{
return $this->idcatetag;
}
public function setIdcatetag(?catetag $idcatetag): self
{
$this->idcatetag = $idcatetag;
return $this;
}
/**
* @return Collection<int, Mission>
*/
public function getMissions(): Collection
{
return $this->missions;
}
public function addMission(Mission $mission): self
{
if (!$this->missions->contains($mission)) {
$this->missions->add($mission);
$mission->addIdtagmissionassign($this);
}
return $this;
}
public function removeMission(Mission $mission): self
{
if ($this->missions->removeElement($mission)) {
$mission->removeIdtagmissionassign($this);
}
return $this;
}
/**
* @return Collection<int, Service>
*/
public function getServices(): Collection
{
return $this->services;
}
public function addService(Service $service): self
{
if (!$this->services->contains($service)) {
$this->services->add($service);
$service->addIdtagserviceassign($this);
}
return $this;
}
public function removeService(Service $service): self
{
if ($this->services->removeElement($service)) {
$service->removeIdtagserviceassign($this);
}
return $this;
}
}
这是我的回购文件:
<?php
namespace App\Repository;
use App\Entity\Tag;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<Tag>
*
* @method Tag|null find($id, $lockMode = null, $lockVersion = null)
* @method Tag|null findOneBy(array $criteria, array $orderBy = null)
* @method Tag[] findAll()
* @method Tag[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class TagRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Tag::class);
}
public function save(Tag $entity, bool $flush = false): void
{
$this->getEntityManager()->persist($entity);
if ($flush) {
$this->getEntityManager()->flush();
}
}
public function remove(Tag $entity, bool $flush = false): void
{
$this->getEntityManager()->remove($entity);
if ($flush) {
$this->getEntityManager()->flush();
}
}
// /**
// * @return Tag[] Returns an array of Tag objects
// */
// public function findByExampleField($value): array
// {
// return $this->createQueryBuilder('t')
// ->andWhere('t.exampleField = :val')
// ->setParameter('val', $value)
// ->orderBy('t.id', 'ASC')
// ->setMaxResults(10)
// ->getQuery()
// ->getResult()
// ;
// }
// public function findOneBySomeField($value): ?Tag
// {
// return $this->createQueryBuilder('t')
// ->andWhere('t.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
}
1条答案
按热度按时间bkhjykvo1#
检查文件名,它应该是Tag.php,T大写,symfony会自动创建小写的表。如果一切正常,尝试删除您的文件,并使用make:entity或php bin/console doctrine:schema:update --force在修改实体后重新写入