Как получить дополнительные свойства из набора результатов, используя MVC в PHP - PullRequest
0 голосов
/ 30 августа 2011

У меня есть следующая структура: Программа> Проект> Этап

Мой файл просмотра для просмотра каждой из этих моделей довольно стандартный, в котором вы увидите что-то похожее на следующее:

<?php foreach ($programs as $p):?>
<p><?php echo $p->getName()?></p>
<?php endforeach?>

Моя переменная $ Programs - это просто массив объектов Program.

Теперь, в качестве примера, допустим, что у меня есть страница, на которой будут перечислены этапы с именем его родительского проекта и программы. Мой оператор SQL выполняет необходимое объединение, и мой массив объектов будет содержать свойства имени программы и проекта. Я добавил 2 метода в мою модель Stage: getProjectName () и getProgramName (), но я не уверен, что это правильный путь. Что если бы я хотел перечислить другие свойства проектов или программ на этой странице, то мне нужно было бы создать несколько дополнительных методов в модели Stage, которые, как я думаю, не принадлежат там.

Может ли кто-нибудь предложить какое-либо понимание того, как лучше всего выполнить эту задачу? Благодаря.

1 Ответ

0 голосов
/ 30 августа 2011

Вы бы получили данные как массив со всеми полями как то так

$programs = array(
  0 =>array(
    'name' => 'prog name 1',
    'somefield' =>'some prog field 1',
    'project' => array(
      0 =>array(
         'name' => 'proj name 1',
         'somefield' =>'some proj field 1',
         'stage'  => array(
           0=>array(
             'name'  =>'stage name 1',
             'somefield' =>'some stage field 1',
           ),  
           1=>array(
             'name'  =>'stage name 2',
             'somefield' =>'some stage field 2',
           )
         )
      ),
      1 =>array(
         'name' => 'proj name 2',
         'somefield' =>'some proj field 2',
         'stage'  => array(
           0=>array(
             'name'  =>'stage name 1',
             'somefield' =>'some stage field 1',
           ),  
           1=>array(
             'name'  =>'stage name 2',
             'somefield' =>'some stage field 2',
           )
         )
      )
    )
  )
);
...