CakePHP использует foreach для отображения различных данных из разных моделей - PullRequest
0 голосов
/ 24 октября 2011

Я пытался отобразить разные данные из разных моделей в одной и той же таблице, используя foreach. Это отношения между моделями

Клиент имеет много работы

Работа принадлежит Заказчику

Работа имеет много заданий

Jobtask принадлежит Job

Jobtask имеет много Jobtasksvehicle

Jobtasksvehicle принадлежит Jobtask and Vehicle

Автомобиль имеет много рабочих заданий.

Это мой контроллер

    function viewsch($id = null) {
    $jobs = $this->Jobtask->find('all', array(

'contain' => array('Customer',
    'Job' => array( 'conditions' => array('Job.id =' => 'Jobtask.job_id')),
        'Jobtasksvehicle'=> array( 'conditions' => array('Jobtasksvehicle.vehicle_id = Vehicle.id')) 

)));
    $this->set(compact('jobs'));        
}

Это мой взгляд

    <div class="jobs index">
<h2><?php __('Jobs Summary');?></h2>
<table cellpadding="0" cellspacing="0">
<tr>
        <th>Job Id</th>
        <th>Jobtasks ID</th>

        <th>Customer</th>
        <th>Vehicle ID</th>


</tr>
<?php
$i = 0;
foreach ($jobs as $job):
    $class = null;
    if ($i++ % 2 == 0) {
        $class = ' class="altrow"';
    }
?>
<tr<?php echo $class;?>>
    <td><?php echo $job['Job']['id']; ?>&nbsp;</td>

    <td><?php echo $job['Jobtask']['id']; ?>&nbsp;</td>     

    <td><?php echo $job['Customer']['full_name']; ?>&nbsp;</td>     

    <td><?php echo $job['Jobtasksvehicle']['vehicle_id']; ?>&nbsp;</td>
</tr>
    <?php endforeach; ?>
</table>
    <?php echo debug($job); ?>
    </div>

Я использовал сдерживаемое поведение, и когда я отлаживаю $ job, я получаю данные только из задания, задания и задания, а не от клиента. Но нет данных в заданиях на работу. Я уже назначил задание на работу. На дисплее отображаются только задание и задание, а для остальных - ошибка «Неопределенный индекс: Клиент и Неопределенный индекс: vehicle_id.

».

Пожалуйста, кто-нибудь, помогите мне. Это действительно важно для моего проекта. Спасибо.

Примечание: если это в SQL, я хочу отобразить это так.

выберите c.full_name, j.id, t.id, tv.vehicle_id из CUSTOMERS c, JOBS j, JOBTASKS t, JOBTASKSVEHICLES tv, где tv.jobtask_id = t.id и t.job_id = j.id и j. customer_id = c.id;

1 Ответ

0 голосов
/ 24 октября 2011

Не могли бы вы опубликовать вывод отладки ($ job), если вы измените

 <td><?php echo $job['Jobtasksvehicle']['vehicle_id']; ?>&nbsp;</td>

на

<td><?php echo debug($job); ?>&nbsp;</td>

Это поможет показать, извлекаются ли данные, но выполняется лихранится в массиве $ job неожиданным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...