我在属性$ views的状态实体中有一个非定向的一对一关系,如下所示:
/**
* @ORM\OneToOne(targetEntity="TB\WallBundle\Entity\BlogsViews", fetch="EXTRA_LAZY", cascade={"persist", "remove"})
* @ORM\JoinColumn(name="blog_views_id", referencedColumnName="id")
*/
protected $views;
问题是当我做var_dump($ status)
时我明白了:
protected 'views' =>
object(TB\WallBundle\Entity\BlogsViews)[1072]
private 'id' => int 5
private 'blog_views_id' => int 61477
private 'views' => int 0
但我不需要总是提取这个值...为什么“extra_lazy”提取不起作用?我做错了什么?
BTW:我不会在代码中访问$ views属性。
答案 0 :(得分:0)
Doctrine创建一个代理对象,其行为类似于BlogViews
的实例。
如果您使用BlogViews
检查对象,这是您看到的var_dump
“对象”。
Doctrine 不最初加载该对象的所有属性。当您尝试访问属性时,代理处理获取属性!
这意味着只要您不尝试访问延迟加载对象/集合,实际上就没有数据库查询。
请注意var_dump
访问这些属性以向您展示!
这是预期的行为,并不意味着关系不是懒惰的。
我希望稍微澄清一下。