类' Doctrine \ ORM \ EntityManager'在链配置的命名空间XXX中找不到

时间:2015-06-04 13:27:43

标签: php doctrine-orm zend-framework2 doctrine

我已经阅读了有关此问题的其他问题,但尚未找到解决方案。

我收到以下错误消息:

  

类' Doctrine \ ORM \ EntityManager'未在链配置>名称空间ZfcUser \ Entity,Common \ Entity,Employment \ Entity,Intern \ Entity,> Team \ Entity,PurchaseRequest \ Entity。

中找到

我有一个HolidayEntity,HolidayController,HolidayService。

添加假期有效,但当我尝试删除假期时,会弹出错误。 我将假日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();
}

代码中断&#34; $ this-&gt; getEntityManager() - &gt; remove($ entity)&#34;方法

2 个答案:

答案 0 :(得分:12)

您获得的错误与Doctrine无法找到名为Doctrine\ORM\EntityManager的实体有关,这显然是错误的。

我的猜测是某个地方(可能在getEntityManager()方法中)您将实体管理器的实例传递给实体管理器。

例如

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

答案 1 :(得分:0)

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

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

更正

$entity = $this->repository->findBySomething('foo')
    ->getQuery()
    ->getFirstResult();
$this->entityManager->remove($entity);