Приветствую.
Есть агрегат, в нем есть коллекция каких-то связей (hasMany). Допустим это Диалог и Сообщения. Ну или к примеру Пост и комментарии к нему.
Конечно представить себе тысячи комментов сложно, но вот тысячи сообщений в чате легко. Ну или еще какой любой пример. Мы сейчас не касаемся каких-то моментов, бизнес логики и т.д.. Просто есть корень агрегат - Диалог и сущность Сообщения в нем. Код - ПРИМЕР :
class Dialog {
//ArrayCollection
private $messages;
public function add(Message $message) {
$this->messages->add($message);
}
public function get(int $id) {
$this->messages->get($id);
}
...тут может быть и дальше еще удаление, редактирование и т.д.
}
На сколько я знаю, сам агрегат выбирается из базы с уже заполненными связями. И как это будет выглядеть если сообщений там тысячи непонятно. Конечно, можно сказать что можно использовать ленивую загрузку и дергать сообщения только когда происходит какая-то логика с сообщениями ($this->messages->....)
Но такой подход все равно к примеру, при добавлении или поиске сообщения - загрузит все сообщения в коллекцию $message из базы. И получается все равно ты выгружаешь всю пачку. Что скажется на производительности.
Как обычно такие вещи решаются?