Реализация репозиториев для вложенных объектов

Я пытаюсь найти выход из этой проблемы. При попытке реализовать репозитории в проекте со сложной доменной логикой возникают некоторые вопросы.

Скажем, у вас есть блоги, в которых есть посты, в которых есть комментарии.

Поэтому я делаю PostRepositoryInterface.

interface PostRepositoryInterface
{
public function findAll();

public function findOneById($id);

public function save(Post $post);
}

Затем я делаю свою реализацию Post Repository для моего NiceORM.

class NiceORMPostRepository implements PostRepositoryInterface {
// Stuff
}

Теперь вопрос заключается в том, как мне обрабатывать вложенные комментарии.

Я нашел несколько ответов, таких как добавление методов в интерфейс:

interface PostRepositoryInterface {
// Old stuff

public function findAllWithComments();
public function findOneByIdWithComments($id);
}

Я чувствую проблему с этим подходом, особенно когда сущность растет и количество вложенных сущностей увеличивается.

Мне бы тоже хотелось узнать ваше мнение о сохранении этих сложных объектов.

Скажем, у нас есть посты с переводами, и то, как мы работаем с переводами, выглядит примерно так …

$postQuery->withLanguages();
$post = $postQuery->findOne();
$post->language('en')->setTitle('Nice Post Title');
$post->save();

Это сохраняет вложенный язык сущностей.

Как бы вы реализовали это с хранилищами? Является ли это возможным?

Спасибо за все идеи.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]