Я пытался отобразить разные данные из разных моделей в одной и той же таблице, используя 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']; ?> </td>
<td><?php echo $job['Jobtask']['id']; ?> </td>
<td><?php echo $job['Customer']['full_name']; ?> </td>
<td><?php echo $job['Jobtasksvehicle']['vehicle_id']; ?> </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;