7

在 Doctrine 中,您可以在实体中设置获取模式以通过一个查询获取所有数据,而不是延迟加载所有数据。

/**
 * @ORM\OneToOne(targetEntity="Application\Entity\Categorie" , fetch="EAGER")
 * @ORM\JoinColumn(name="CAT_ID", referencedColumnName="CAT_ID")
 * @access protected
 * @var \Application\Entity\Categorie
 */
protected $CAT_ID;

当涉及到第三级时,我有这个问题。实体“a”与实体“b”有关系。实体“b”与实体“c”有关系。在一个查询中选择实体“a”和实体“b”,在单个查询中将实体“c”与它们分开。我已经确定fetch="EAGER"了他们之间的每一个关系。

Doctrine 不是fetch="EAGER"在第三级处理还是出了什么问题?

4

1 回答 1

13

我不这么认为,但是您可以做的是仅在必要时设置 EAGER 模式

<?php
$query = $em->createQuery("SELECT u FROM MyProject\User u");
$query->setFetchMode("MyProject\User", "address", \Doctrine\ORM\Mapping\ClassMetadata::FETCH_EAGER);
$query->execute();

有关更多信息,请参阅Doctrine 文档

于 2013-09-22T14:49:46.757 回答