原则:延迟加载和OneToOne关联

时间:2019-03-17 20:00:08

标签: symfony orm doctrine lazy-loading

是否可以通过OneToOne关联实现延迟加载而无需进行黑客入侵或更改数据库?

示例:

class User
{
    /**
      * @ORM\OneToOne(targetEntity="UserData", mappedBy="user", cascade={"persist"})
      */
    private $userData;
}

class UserData
{
    /**
     * @ORM\OneToOne(targetEntity="User", inversedBy="userData")
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     */
    private $user;
}

实体UserData不能被延迟加载,因此每当我获取用户实体时,我也会获取关联的UserData实体。

我遇到了两种解决方法

  1. 数据库解决方法-不要将user_id存储在UserData实体中,而是将user_data_id存储在User实体中。这样就可以实现莱兹加载。但这从关系数据库的角度来看不是很好。

  2. 将关联设为OneToMany。

我为什么要讨论一个讨论了很多次的话题?

我发现了这个问题-https://github.com/doctrine/orm/pull/970

因此,有一种方法可以为OneToOne关联启用延迟加载。

我的问题是,有什么进展吗?有我不知道的东西吗?

谢谢

0 个答案:

没有答案