В 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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