как получить значение из массива - Cakephp

У меня есть таблица с именем reports, имеющая (id,form_id,title)

и еще одна таблица form(id,name)

в моем report.ctp я перечисляю все заголовки своих отчетов, извлекая их из таблицы, используя

function reports()
{
    $allreports= $this->Report>find('all',
                                    array('conditions'=>array('Report.user_id'=>$userId),
                                          'group' => array('Report.report_id')));

    foreach($allreports as & $report):
        $report['Report']['formname'] = $this->Form->find('all',
                array(
                    'fields'=>array('Form.name'),
                    'conditions'=>array('Form.id'=>$report['Report']['form_id'])));
    endforeach;

    $this->set('allreports', $allreports);
}

я использовал foreach, чтобы найти соответствующее имя формы из таблицы форм.

in my reports.ctp

я хочу, чтобы заголовок отчета и имя формы соответствовали ему один за другим, например

Report1 - Form name - Form1

Report2 - Form name - Form2

Report3 - Form name - Form1

я пробовал выше, используя

          <div> <a href="#">
                            Reportname:    <?php echo $report['Report']['title'];?>
       </a>
       <a href="#">   Form name <?php echo $report['Report']['formname'];?></a>
         </div>

Но я получаю как массив для вроде

Report1 - Form name - Array

Report2 - Form name - Array

Report3 - Form name - Array

как это сделать?? подскажите пожалуйста..


person useranon    schedule 14.09.2009    source источник
comment
Почему вы хотите это сделать? Если вы правильно свяжете свои модели, вы автоматически получите данные для связанных моделей, поэтому имя вашей формы будет в $report['Form']['name']. Нет необходимости перебирать извлеченные $reports и извлекать данные для них вручную, и нет веских причин требовать другой формат данных, чем тот, который Cake предоставляет вам по умолчанию.   -  person deceze♦    schedule 14.09.2009
comment
Вы, вероятно, хотите сделать то, что deceze сказал выше. Используйте ассоциации моделей, и это поможет вам получить данные, которые вам нужны/нужны.   -  person Travis Leleu    schedule 14.09.2009


Ответы (1)


$report['Report']['formname'] = $this->Form->find(...) вернет массив. Вот почему он говорит «Массив».

Если вы собираетесь продолжить логику, с которой вы работаете... попробуйте что-то более похожее....

foreach($allreports as & $report):
    $temp = $this->Form->read('name',$report['Report']['form_id']);

    $report['Report']['formname']=$temp['Form']['name']
endforeach;

Но да... вы также можете пойти по пути использования встроенных функций CakePHP, как говорит deceze. Это был бы более чистый способ сделать это наверняка.

person Ryan    schedule 11.08.2011