Doctrine 存储库返回空结果集

Posted

技术标签:

【中文标题】Doctrine 存储库返回空结果集【英文标题】:Doctrine repository returns empty resultset 【发布时间】:2012-03-11 10:05:49 【问题描述】:

Doctrine 存储库存在真正问题。

即使使用 findAll() 方法,它也会返回一个空结果集。表中有条目,生成的 SQL 运行良好。其他存储库工作正常。没有错误消息/异常 - 只是一个空的结果集。

扯掉我的头发。

使用 Doctrine 2.1.6

有人知道从哪里开始寻找吗?

实体定义在http://pastie.org/private/o4lbdxsnjq1vogkeburbaq3d

【问题讨论】:

为什么投反对票?这不是一个合理的问题吗? 我们应该猜出什么是错的吗?尝试删除 repositoryClass 属性并使用默认存储库进行检查。 meze - 我已经尝试过了,它没有任何区别。这就是我遇到问题的原因,Doctrine 没有抛出任何错误/异常,并且生成的 SQL 有效。它不透明,我询问是否其他人有类似的问题并可以提供帮助。 那个可以缓存,学说用不同的数据库... 【参考方案1】:

第一

在您声明自己的存储库之前,实体会使用 EntityRepository。如果您声明自己的 Repository,您首先可以开始检查是否从原始 EntityRepository 扩展您的存储库。

我找到了this blog post,当时对我很有帮助:)

您可能还想查看Doctrine API。

第二

我知道findAll() 方法在您检查并创建一个异常之前不会抛出任何异常。

例如:

$exm = $this->em->getRepository('myRepo')->findAll();
if(!$exm)   
    throw new \Doctrine\ORM\NoResultException;   

P.S:我可能是错的。然而,我多年来一直使用这种风格,我很满意。如果我错了,我很乐意学习最好的方法。所以请纠正我!

【讨论】:

两个链接都失效了。我有同样的问题,我的存储库扩展了 ServiceEntityRepository。 Symfony 5.1.5,Doctrine 2.1.2

以上是关于Doctrine 存储库返回空结果集的主要内容,如果未能解决你的问题,请参考以下文章

Doctrine ORM,两个不同的查询产生相同的结果集

Doctrine 2.0 结果集映射使用不正确?

SPARQL 查询返回空结果集

Postgres检查jsonb数组是不是不包含值返回空结果集

外键返回空结果集

用于返回结果集的 where 子句中的 case 语句包含空值