@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()
)时,doctrine才会从数据库中获取和加载该对象。 (这是默认行为)关于它们之间的区别,以下是额外的信息:
(fetch = "EAGER")
当原始查询目标实体从Doctrine中加载时,相关联的实体将会被立即获取。这意味着没有额外的SQL查询。
(fetch = "LAZY")
只有当原始查询目标实体调用引用方法时,例如$cart->getItems()
,相关联的实体才会被获取。这意味着会有额外的
SQL查询。