Предположим, у нас есть две связанные таблицы, например, одна, представляющая человека:
PERSON
- имя
- возраст
- ...
- current_status_id
и один представляет обновление статуса в определенное время для этого человека:
STATUS_HISTORY
- recorded_on
- status_id
- blood_pressure
- длина
- ...
Я построил приложение на PHP с использованием Zend Framework и попытался сохранить «объектно-ориентированность», используя класс для представления личности и класс для представления статуса человека. Я также пытался использовать принципы ORM, где это возможно, например, использование картографа данных для отделения модели предметной области от слоя данных.
Каким был бы хороший (и объектно-ориентированный) способ вернуть список людей из картографа данных, когда в списке я иногда хочу знать последнее измеренное кровяное давление человека, а иногда нет (в зависимости от требований отчета / представления, в котором используется список). То же самое верно для разных полей, например значения, рассчитанные на уровне данных (сумма, количество и т. д.).
Моей первой мыслью было использование набора строк (например, Zend_Db_Rowset), но это создает высокую связь между моим представлением и уровнем данных. Другой способ может состоять в том, чтобы вернуть список людей, а затем запросить для каждого человека последний статус с помощью картографа данных для запроса статуса конкретного человека. Однако это приведет к (как минимум) одному дополнительному запросу для каждой записи о человеке и не позволит мне использовать JOINS на уровне данных.
Есть предложения?