我对于为什么教义查询以这种特定方式工作感到有点困惑。假设我们有文章和用户实体,用户与文章具有OneToMany关系。学说相关实体附加查询
然后,在控制器中,我们将获取所有文章并将它们发送到视图。
$em = $this->getEntityManager();
$articles = $em->getRepository('MyBundle:Article')->findAll();
而在视图中我们会循环它们。
{% for article in articles %}
{{ article.author.name }}
{% endfor %}
的这里的问题是,这段代码确实为所有报道的额外查询(文章的用户)。
我知道我们可以使用DQL,但是我的问题是Doctrine如何在这里工作,为什么不为这种事情优化,这很常见?我觉得这是通过应用程序常用的'错误',这真的会减慢它们的速度。我刚刚发现了这一点,现在我必须将很多查询重写到我的控制器中。
这也违背了ORM的目的,它实际上应该提供写入应用程序的速度。这迫使我们编写DQL/QB查询,而不是利用ORM。那么,如果ORM表现如此糟糕,那么ORM什么时候才能使用?
考虑扫描文档:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/ – Cerad
查看渴望与懒惰的抓取,你就会开始理解。 – Daniel
渴望获取的问题在于,即使不需要,也会始终提取相关实体。 –