Как мне иметь дело с отношениями Doctrine Entity, которые я иногда хочу загружать, но не в других случаях - PullRequest
0 голосов
/ 11 июля 2019

tldr;У меня есть коллекция сущностей Doctrine.Иногда я хочу загружать отношения.Иногда нет.Есть ли рекомендуемые настройки или шаблоны для этой ситуации?

Я переводил форму проекта Laravel, используя Eloquent в Doctrine.Пока я использовал Eloquent, мой код уровня домена обращался к репозиториям, а не манипулировал / сохранял объект напрямую.

Эти репозитории позволяли мне контролировать, какие отношения были загружены, а какие - нет.Причина в том, что иногда мне не нужно загружать эти отношения, так как они не используются.Действительно простой пример:

class Repository
{
    public function getAll(): Collection
    {
        return EloquentModel::get();
    }

    public function getAllWithRelation(): Collection
    {
        $models = $this->getAll();
        $models->load('relation');

        return $models;
    }
}

Я столкнулся с проблемой при использовании Doctrine.Я установил свои репозитории, чтобы получить коллекцию сущностей.Тем не менее, кажется, я не могу выбирать, когда загружать отношения на этих объектах.Я должен выбрать либо «нетерпеливый», либо «ленивый» в конфигурации объекта.

Есть ли рекомендуемый шаблон для решения этой проблемы?Или, может быть, есть способ загрузить коллекцию отношений сущностей из хранилища?

...