Orm fetch=";热切的;和fetch=";“懒惰”;理论上

Orm fetch=";热切的;和fetch=";“懒惰”;理论上,orm,doctrine-orm,many-to-many,Orm,Doctrine Orm,Many To Many,条令中注释@ManyToOne中的fetch=“EAGER”和fetch=“LAZY”之间有什么区别 /** * @ManyToOne(targetEntity="Cart", cascade={"all"}, fetch="EAGER") */ /** * @ManyToOne(targetEntity="Cart", cascade={"all"}, fetch="LAZY") */ 简单地解释一下,当您加载一个实体时,如果它与一个或多个实体有关联,原则应该怎么做 如果关联被标记

条令中注释
@ManyToOne
中的
fetch=“EAGER”
fetch=“LAZY”
之间有什么区别

/**
 * @ManyToOne(targetEntity="Cart", cascade={"all"}, fetch="EAGER")
 */

/**
 * @ManyToOne(targetEntity="Cart", cascade={"all"}, fetch="LAZY")
 */

简单地解释一下,当您加载一个实体时,如果它与一个或多个实体有关联,原则应该怎么做

如果关联被标记为“急切的”,它也将获取并加载关联的实体

如果关联标记为惰性,则条令将创建代理对象(虚拟对象)来代替实际实体。只有当您第一次调用该关联实体(如
$cart->getItems()
)时,条令才会从数据库中获取并加载该对象。(这是


请参阅:

有关它们之间差异的其他信息:

(fetch=“EAGER”)

从doctrine加载原始查询目标实体后,将立即获取关联实体。这意味着数据库上没有额外的SQL查询

(fetch=“LAZY”)


仅当原始查询目标实体调用引用方法(如
$cart->getItems()
)时,才会提取关联的实体。这意味着,在DB上有额外的SQL查询。

Btw。默认行为是什么?我假设它是惰性的,正如我所看到的,惰性加载是原则的默认设置:当我从不写每一个时,默认设置是什么?来自“灾难简”的链接不再工作了,这里有一个更新的链接(适用于2.6):。引用有关默认行为的链接:
关联默认标记为惰性,这意味着关联的整个集合对象在第一次被访问时就被填充。
惰性是默认行为,我认为它更快!非常感谢。我来这里是想知道,当获取目标时,急切的获取是否会导致额外的查询。目前为止最好的解释是