Symfony2,学说2一对一非定向关系



我在状态实体中对属性$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属性。

Doctrine创建了一个代理

对象,其行为类似于BlogViews的实例。

这是您看到的BlogViews"对象",如果您使用var_dump检查对象。

原则最初不会加载该对象的所有属性。当您尝试访问属性时,代理会处理获取属性!

这意味着只要您不尝试访问延迟加载对象/集合,实际上就没有数据库查询。

请记住,var_dump确实会访问这些属性以向您显示它们!

这是预期行为,并不意味着关系不是延迟获取的。

我希望这能把事情弄清楚一点。

最新更新