Доктрина: Ленивая загрузка и OneToOne ассоциации - PullRequest
0 голосов
/ 17 марта 2019

возможно ли добиться ленивой загрузки с ассоциациями 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 объекта не может быть загружен с отложенным доступом, поэтому всякий раз, когда я выбираю объект User, я также выбираю связанный объект UserData.

Я наткнулся на 2 обходных пути

  1. Обходной путь БД - не храните user_id в сущности UserData, но user_data_id в сущности User. Тогда лайз загрузка может быть достигнута. Но это нехорошо с точки зрения реляционных БД.

  2. Подделать ассоциацию как OneToMany.

Почему я рассматриваю тему, которая обсуждалась много раз?

Я нашел эту проблему - https://github.com/doctrine/orm/pull/970

Таким образом, есть способ включить отложенную загрузку для ассоциаций OneToOne.

У меня вопрос, есть ли прогресс? Есть что-то, чего я не знаю?

Спасибо

...