我對於爲什麼教義查詢以這種特定方式工作感到有點困惑。假設我們有文章和用戶實體,用戶與文章具有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
渴望獲取的問題在於,即使不需要,也會始終提取相關實體。 –