Symfony 错误:在链配置的命名空间 App\Entity 中找不到类 xxx [重复]
Posted
技术标签:
【中文标题】Symfony 错误:在链配置的命名空间 App\\Entity 中找不到类 xxx [重复]【英文标题】:Symfony error: The class xxx was not found in the chain configured namespaces App\Entity [duplicate]Symfony 错误:在链配置的命名空间 App\Entity 中找不到类 xxx [重复] 【发布时间】:2021-12-16 23:47:48 【问题描述】:我用实体Company
和控制器CompanyController
创建了一个新的symfony 项目。我想从数据库中获取结果,但我不断收到此错误:The class 'App\Repository\CompanyRepository' was not found in the chain configured namespaces App\Entity
,我不知道为什么。
我搜索了互联网,但我只阅读了在命名空间不是 App\Entity 时解决错误的答案。请帮帮我。
在创建新的 symfony 项目时,这些文件都存储在 src 文件夹中。我没有更改任何配置文件,所以每个配置都是默认的。
这是我的实体:
<?php
namespace App\Entity;
use App\Repository\CompanyRepository;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=CompanyRepository::class)
*/
class Company
之后只有 getter 和 setter。
这是我的控制器:
<?php
namespace App\Controller;
use App\Repository\CompanyRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
#[Route('/api/company', name: 'company')]
class CompanyController extends AbstractController
#[Route(name: 'company.get', methods: ["GET"])]
public function getCompanies(): Response
$entityManager = $this->getDoctrine()->getManager();
$repository = $entityManager->getRepository(CompanyRepository::class);
$companies = $repository->findAll();
$data = [];
foreach ($companies as $company)
$data[] = $company->toArray();
return $this->json([
'data' => $data
]);
这是我的公司资料库:
<?php
namespace App\Repository;
use App\Entity\Company;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @method Company|null find($id, $lockMode = null, $lockVersion = null)
* @method Company|null findOneBy(array $criteria, array $orderBy = null)
* @method Company[] findAll()
* @method Company[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class CompanyRepository extends ServiceEntityRepository
public function __construct(ManagerRegistry $registry)
parent::__construct($registry, Company::class);
// /**
// * @return Company[] Returns an array of Company objects
// */
/*
public function findByExampleField($value)
return $this->createQueryBuilder('c')
->andWhere('c.exampleField = :val')
->setParameter('val', $value)
->orderBy('c.id', 'ASC')
->setMaxResults(10)
->getQuery()
->getResult()
;
*/
/*
public function findOneBySomeField($value): ?Company
return $this->createQueryBuilder('c')
->andWhere('c.exampleField = :val')
->setParameter('val', $value)
->getQuery()
->getOneOrNullResult()
;
*/
【问题讨论】:
你能告诉我们你的实体吗?您的存储库配置可能有错误 在你的公司实体类中试试这个@ORM\Entity(repositoryClass="App\Repository\CompanyRepository") @OussMaL'aireBien 不幸的是,这不是很好。又是同样的错误。 您能给我们看看您的 CompanyRepository 文件吗? 请分享更多细节。这些文件存储在哪里?您是如何配置实体映射的? 【参考方案1】:在控制器中,将$repository = $entityManager->getRepository(CompanyRepository::class);
替换为$repository = $entityManager->getRepository(Company::class);
并将use App\Repository\CompanyRepository;
替换为use App\Entity\Company;
因为 getRepository()
需要 Entity 类,而不是 Repository 类。
<?php
namespace App\Controller;
use App\Entity\Company;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
#[Route('/api/company', name: 'company')]
class CompanyController extends AbstractController
#[Route(name: 'company.get', methods: ["GET"])]
public function getCompanies(): Response
$entityManager = $this->getDoctrine()->getManager();
$repository = $entityManager->getRepository(Company::class);
$companies = $repository->findAll();
$data = [];
foreach ($companies as $company)
$data[] = $company->toArray();
return $this->json([
'data' => $data
]);
【讨论】:
这是抛出Class 'App\Controller\Company' does not exist
错误。
添加这个“使用App\Entity\Company;”
我更新了答案以上是关于Symfony 错误:在链配置的命名空间 App\Entity 中找不到类 xxx [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Zend Framework 2 + Doctrine ODM,“在链配置的命名空间中找不到类”错误?
另一个未知实体命名空间别名错误(Symfony2,手动创建的实体)