Symfony2,学说2一对一的单向关系

时间:2014-03-01 22:04:59

标签: symfony doctrine-orm one-to-one

我在属性$ 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属性。

1 个答案:

答案 0 :(得分:0)

Doctrine创建一个代理对象,其行为类似于BlogViews的实例。

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

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

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

请注意var_dump 访问这些属性以向您展示!

这是预期的行为,并不意味着关系是懒惰的。

我希望稍微澄清一下。