在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;
当涉及到第3级时,我遇到了这个问题。
实体“a”与实体“b”有关系。实体“b”与实体“c”有关系。在一个查询中选择实体“a”和实体“b”,并且在单个查询中将实体“c”与它们分开。我在他们之间的每个关系上都设置了fetch="EAGER"
。
没有Doctrine在第3级处理fetch="EAGER"
或出现了什么问题?
答案 0 :(得分: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 docs。