Я пытаюсь найти выход из этой проблемы. При попытке реализовать репозитории в проекте со сложной доменной логикой возникают некоторые вопросы.
Скажем, у вас есть блоги, в которых есть посты, в которых есть комментарии.
Поэтому я делаю 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();
Это сохраняет вложенный язык сущностей.
Как бы вы реализовали это с хранилищами? Является ли это возможным?
Спасибо за все идеи.
Задача ещё не решена.
Других решений пока нет …