Moh*_*nda 53 orm many-to-many doctrine-orm
Doctrine中fetch="EAGER"和fetch="LAZY"注释之间有什么区别@ManyToOne?
/**
* @ManyToOne(targetEntity="Cart", cascade={"all"}, fetch="EAGER")
*/
/**
* @ManyToOne(targetEntity="Cart", cascade={"all"}, fetch="LAZY")
*/
Run Code Online (Sandbox Code Playgroud)
Pra*_*eep 83
简单地解释一下,当你加载一个实体并且它与一个或多个实体有关联时,学说应该做什么?
如果关联被标记为EAGER,它也将获取并加载关联的实体.
如果关联标记为LAZY,则doctrine将创建代理对象(虚拟对象)来代替实际实体.只有当您第一次调用该关联实体(如$cart->getItems())时,doctrine才会从数据库中获取并加载该对象.
参考:https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/advanced-configuration.html#association-proxies
vik*_*ert 23
有关它们之间差异的其他信息:
(fetch = "EAGER")
一旦从doctrine加载原始查询目标实体,就会获取关联的实体.这意味着DB上没有其他SQL查询.
(fetch = "LAZY")
只有在原始查询目标实体调用引用方法时才会获取关联实体,例如$cart->getItems().这意味着,additionalDB上有SQL查询.
| 归档时间: |
|
| 查看次数: |
43608 次 |
| 最近记录: |