我在Symfony和Doctrine问题上遇到了一个奇怪的行为,实际上发现可能与这个错误有关。
请求。严重:未捕获的 PHP 异常 Doctrine\ORM\EntityNotFoundException: "Entity is not found." at /dev/vendor/doctrine/orm/lib/Doctrine/ORM/Proxy/ProxyFactory.php line 177 {"异常":"[对象] (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,如预期的那样。
这里有什么想法吗?
我为此挣扎了几个小时,然后我找到了两个解决方案:
- 应用原则解决方法,在 BasicEntityPersister 的第 758 行
改变:
return $entities ? $entities[0] : null;
自:
return $entities ? $entities[0] : $entity;
重新生成 Symfony 引导缓存:
composer run-script post-update-cmd --no-dev
- 对于 2,我还将 MySQL 升级到 5.6
也许很明显,但是您是否检查过查询是否返回值?关于您的实体,请制作没有错误的舒尔(doctrine orm:validate-schema
)。
顺便说一句,我在代理目录方面遇到了一些问题 - 在 OS X 上很正常(原则 2。自动生成代理)
就我而言,我非常关注不正确的注释(正如大多数回复所暗示的那样),并且没有看到一个简单的问题。我刚刚导入了一个损坏的数据库转储。
因此,如果有人再次遇到同样的问题:
(1) 使用 orm:schema-tool:validate 不仅可以检查注释是否正确,还可以检查数据库是否同步。
(2) 始终使用校验和检查下载的数据库!