奇怪的学说 EntityNotFoundException

Strange Doctrine EntityNotFoundException

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

request.CRITICAL: Uncaught PHP Exception Doctrine\ORM\EntityNotFoundException: "Entity was not found." at /dev/vendor/doctrine/orm/lib/Doctrine/ORM/Proxy/ProxyFactory.php line 177 {"exception":"[object] (Doctrine\ORM\EntityNotFoundException(code: 0)

提供一些代码示例:

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

然后我对两个返回结果进行赋值,如下:

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

然后实际上通过 API.

返回

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

$output["next"] = "Test value 1";
$output["following"] = "Test value 2";

然后没有异常和错误发生,响应状态为 200,符合预期。

有什么想法吗?

也许很明显,但是您是否检查过您的查询 return 值?关于您的实体,确保没有错误 (doctrine orm:validate-schema)。
顺便说一下,代理目录有一些问题 - 通常在 OS X (Doctrine 2. Auto generating proxies)

我为此苦苦挣扎了几个小时,然后找到了两个解决方案:

  1. 在 BasicEntityPersister 的第 758 行应用学说解决方法

变化:

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

至:

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

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

就我而言,我非常关注不正确的注释(正如大多数回复所暗示的那样),而没有看到一个简单的问题。我刚刚导入了损坏的数据库转储。

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

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

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