Во-первых, как я знаю, Entity в DDD почти совпадает с Value Object, за исключением того, что Entity имеет идентичность. В каждой статье, которую я прочитал, говорится, что идентификатор сущности имеет ORM-сопоставление с любым инструментом ORM. Но я не хочу использовать ORM-отображение в Entity. Вместо этого я хотел бы выполнять операции базы данных с интерфейсами репозитория без сопоставления. И, в этом случае, я застрял на том, как я должен это сделать.
Я объясню в своем уме с примером ниже
Давайте предположим, что у меня есть приложение TODO и есть некоторые вопросы в TODO и некоторые ответы в каждом из этих вопросов.
У нас есть 3 объекта значения (или объекта): Todo TodoQuestion TodoQuestionValue
Теперь я подумал, что у меня есть объект значения (или объект) для ТОДО. Этот объект значения имеет метод для получения вопросов, который получает массив объекта значения TodoQuestion. А внутри объекта значения TodoQuestion у нас есть метод для получения значений вопросов, который получает массив TodoQuestionValue.
<?php
class Todo{
private int $id;
/**
* @param array<TodoQuestion> $questions
*/
private array $questions;
private TodoRepositoryInterface $repository;
public function __constructor(TodoRepositoryInterface $repository){
$this->repository = $repository;
}
public function getQuestions(){
$this->questions = $this->repository->listQuestionsByTodoId($this->id);
}
}
<?php
class TodoQuestion{
private int $id;
private string $question;
/**
* @param array<TodoQuestionValue> $values
*/
private array $values;
private TodoRepositoryInterface $repository;
public function __constructor(TodoRepositoryInterface $repository){
$this->repository = $repository;
}
public function getValues(){
$this->values = $this->repository->listValuesByQuestionId($this->id);
}
}
Теперь я хотел бы узнать ваше мнение о том, как я мог бы сформировать эту структуру с помощью следуя правилам DDD.
Спасибо.