Se questo è veramente per scopi statistici, come sottintende Greg Burghardt, penso che potresti impiegare esplicitamente i read-models , reso popolare in DDD. È una manifestazione del concetto CQRS . Il punto è che non hai bisogno di oggetti, usati da parte tua, implementando alcune logiche di business, per interrogare i dati. Quindi nel tuo caso potresti avere un repository separato, come il seguente:
class StatisticsRepository
{
public function getByPlayerAndSeason(PlayerId $playerId, SeasonId $seasonId)
{
// db query
return new Statistics(
// here it goes raw data
);
}
}
Potresti avere i dati grezzi restituiti come un semplice array, oppure potresti avere oggetti di modello di lettura, che non hanno nulla a che fare con i tuoi oggetti di dominio avanzato usati dal tuo comando.
Ci sono un paio di profitti:
- Semplicità. Non devi aderire ai tuoi oggetti comportamentali alla miriade di query. Altrimenti il tuo sito di comando si tufferà nella logica di interrogazione.
- Quindi, molto probabilmente, performance. Hai a che fare con raw sql, non con ORM.