Мне кажется, что в любом случае все в порядке. Но я бы склонялся к последнему: собрать все данные для каждой записи в один массив / объект и передать их в представление.
В конечном счете, специфика того, какие данные вам легко доступны в действии, зависит от ваших запросов, вашего ORM, графа объектов, который создается запросами / картографами / ORM и т. Д. Но при условии, что ваш объединенный запрос создает В проекте, в котором есть участники для Note и User, вы можете сделать что-то подобное в своем действии:
$project = $repository->getProject(); // however this is done
$this->view->projectData = array(
'name' => $project->name,
'date' => $project->date,
'user_name' => $project->User->name,
'user_email' => $project->User->email,
'note' => $project->Note->content,
);
То есть представлению не нужно знать о графе объектов; эти знания находятся на уровне контроллера / действия и выше. Действие разворачивает данные из графика и превращает их в простую форму (массив) для представления для отображения.
Вы можете даже вставить это в промежуточный объект модели представления, представляющий $project
- тот, который принимает объект / граф $project
в конструкторе, но является неизменным и доступен только для чтения. Затем передайте этот объект модели представления в представление для рендеринга.