我在状态实体中对属性$views有无方向的一对一关系,如下所示:
/**
* @ORMOneToOne(targetEntity="TBWallBundleEntityBlogsViews", fetch="EXTRA_LAZY", cascade={"persist", "remove"})
* @ORMJoinColumn(name="blog_views_id", referencedColumnName="id")
*/
protected $views;
问题是当我做var_dump($status)
明白了:
protected 'views' =>
object(TBWallBundleEntityBlogsViews)[1072]
private 'id' => int 5
private 'blog_views_id' => int 61477
private 'views' => int 0
但是我不需要总是获取此值...为什么"extra_lazy"提取不起作用?我做错了什么?
顺便说一句:我不在代码中无处访问$views属性。
对象,其行为类似于BlogViews
的实例。
这是您看到的BlogViews
"对象",如果您使用var_dump
检查对象。
原则最初不会加载该对象的所有属性。当您尝试访问属性时,代理会处理获取属性!
这意味着只要您不尝试访问延迟加载对象/集合,实际上就没有数据库查询。
请记住,var_dump
确实会访问这些属性以向您显示它们!
这是预期行为,并不意味着关系不是延迟获取的。
我希望这能把事情弄清楚一点。