奇怪的Doctrine EntityNotFoundException

时间:2015-04-28 12:17:33

标签: php symfony orm doctrine-orm

我遇到了Symfony和Doctrine问题的奇怪行为,实际上发现这可能与this bug有关。

  

request.CRITICAL:未捕获的PHP异常   Doctrine \ ORM \ EntityNotFoundException:“找不到实体。”在   /dev/vendor/doctrine/orm/lib/Doctrine/ORM/Proxy/ProxyFactory.php line   177 {“例外”:“[对象]   (Doctrine \ ORM \ EntityNotFoundException(代码:0)

提供一些代码示例:

$moduleId = 1;

$template->modules()
   ->newPivotStatementForId($moduleId)
   ->where('order', 3)
   ->delete()

然后我分配两个返回的结果,如下所示:

$nextItems = $this->itemManager->findNextItemByCatId($catId, 2, $allItems);

然后通过API实际返回。

然而,当出于测试目的时 - 我分配随机值:

$output["next"] = $nextItems[0];
$output["following"] = $nextItems[1];

然后没有异常和错误发生,响应状态为200,正如预期的那样。

这里有什么想法吗?

3 个答案:

答案 0 :(得分:3)

我在这几个小时内挣扎然后找到了两个解决方案:

  1. 在BasicEntityPersister
  2. 的第758行应用doctrine变通方法

    改变:

        return $entities ? $entities[0] : null;
    

    到:

        return $entities ? $entities[0] : $entity;
    
    1. 重新生成symfony bootstrap缓存:

      composer run-script post-update-cmd --no-dev
      
      • for 2我也将mysql升级到5.6

答案 1 :(得分:2)

也许显而易见,但是你要检查你的查询是否返回值?关于你的实体,使shure无误(doctrine orm:validate-schema) 顺便说一句,我在代理目录中遇到了一些问题 - 在OS X(Doctrine 2. Auto generating proxies

答案 2 :(得分:0)

就我而言,我专注于不正确的注释(正如大多数答复所建议的那样),却看不到一个简单的问题。我刚刚导入了损坏的数据库转储。

因此,如果有人再次遇到相同的问题:

(1)使用orm:schema-tool:validate不仅检查正确的批注,还检查数据库是否同步。

(2)始终使用校验和检查下载的数据库!