类'DoctrineORMEntityManager'在链配置的命名空间XXX中找不到


The class 'DoctrineORMEntityManager' was not found in the chain configured namespaces XXX

我已经阅读了关于这个问题的其他问题,但到目前为止还没有找到解决方案。

我得到以下错误信息:

类'Doctrine'ORM'EntityManager'在配置的链>名称空间ZfcUser'Entity, Common'Entity, Employment'Entity, Intern'Entity,>Team'Entity, PurchaseRequest'Entity中找不到。

我有一个假日实体,假日控制器,假日服务。

添加假期工作,但当我试图删除假期错误弹出。我将假日id从控制器传递给服务,然后服务获取相关对象并运行doctrine 2 removeEntity命令。

目前我不知道该如何处理这个问题。

控制器代码:

public function deleteAction()
{
    $holidayId = $this->params()->fromRoute('id', 0);
    try {  
        $this->getServiceLocator()->get('holidayService')->removeHoliday($holidayId);
    } catch (Exception $e) {
        $this->flashMessenger()->addErrorMessage($e->getMessage() . '<br>' . $e->getTraceAsString());
    }
    return $this->redirect()->toRoute('holiday/list');
}
服务代码:

public function removeHoliday($holidayId)
{
    try{
    $holiday = $this->findOneHolidayById($holidayId);
    $this->removeEntity($holiday);
    } catch (Exception $e) {
        var_dump($e);
    }
}
protected function removeEntity($entity)
{
    $this->getEntityManager()->remove($entity);
    $this->getEntityManager()->flush();
}

代码在"$this->getEntityManager()->remove($entity)"方法中中断

你得到的错误与学说无法找到一个名为Doctrine'ORM'EntityManager的实体有关,这显然是错误的。

我的猜测是某处(也许在getEntityManager()方法中),您正在将实体管理器的实例传递给实体管理器。

例如

$entityManager = new EntityManager();
$entity = new EntityManager();
$entityManager->remove($entity);

@AlexP的答案是正确的。具体来说,这是使用doctrine时常见的错误之一:

Repository.php

public function findBySomething($something)
{
    return $this->createQueryBuilder('e')
       ->where('e.something = :something')
       ->setParameter('something', $something);
}
别处

// WRONG USE CASE
$entity = $this->repository->findBySomething('foo');
$this->entityManager->remove($entity);
<<p> 修正/strong>
$entity = $this->repository->findBySomething('foo')
    ->getQuery()
    ->getFirstResult();
$this->entityManager->remove($entity);