В DDD, как передать агрегацию в методы других агрегатов, полностью или идентификатора? ⇐ Php

Кемеровские программисты php общаются здесь
Anonymous
В DDD, как передать агрегацию в методы других агрегатов, полностью или идентификатора?

Сообщение Anonymous »

Я знаю, что если у одного заполнителя есть ссылка на другую, у первого должно быть идентификационное свойство второго. Например: < /p>

Код: Выделить всё

FooId extends AbstractIdValueObject { }

Foo extends AggregateRoot { }

Bar extends AggregateRoot {
private FooId $fooId
}
< /code>
Но что следует сделать для методов? Что правильно: < /p>
User {
changeGroup(Group $group) {
$this->groupId = $group->id;
}
}
< /code>
или < /p>
User {
changeGroup(GroupId $groupId) {
$this->groupId = $groupId;
}
}
< /code>
 Примечание: это очень упрощенный пример. В реальном проекте количество параметров может быть больше, включая 2-3 агрегата. Но вот проблема. Я получаю GroupId 
от запроса, затем получаю весь объект по идентификатору из репозитория (база данных), передаю его методу, внутри метода я получаю этот идентификатор ... это странно и иметь ненужный запрос в базу данных. Это более плохо, если будет больше агрегатов < /p>
Второй пример проще и не имеет ненужных запросов на репозиторий (IES). Но теперь это не вроде «домена/повсеместного языкового стиля»? Или я ошибаюсь? Как это сделать и почему.

Подробнее здесь: https://stackoverflow.com/questions/795 ... rely-or-id

Вернуться в «Php»