我一直在尝试使用foreach在同一个表中显示来自不同模型的不同数据。这是模型之间的关系
客户有很多工作
作业属于客户
Job hasMany Jobtask
Jobtask belongsTo Job
Jobtask有很多Jobtasksvehicle
Jobtasksvehicle属于Jobtask and Vehicle
车辆有多个Jobtasksvehicle
这是我的控制器
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时,我只从jobtask,job和jobtasksvehicle获取数据,而不是来自客户。但是在worktasksvehicle中没有数据。我已经将jobtasksvehicle分配到了jobtask。在显示中只显示作业和作业任务,其余部分显示错误,指出未定义索引:客户和未定义索引:vehicle_id。
请有人帮助我。这对我的项目非常重要。感谢。
注意:如果它在SQL中,我想要显示的是这样的。
从CUSTOMERS c,JOBS j,JOBTASKS t,JOBTASKSVEHICLES tv中选择c.full_name,j.id,t.id,tv.vehicle_id,其中tv.jobtask_id = t.id和t.job_id = j.id和j。 customer_id = c.id;
答案 0 :(得分:0)
如果更改
,可以发布debug($ job)的输出 <td><?php echo $job['Jobtasksvehicle']['vehicle_id']; ?> </td>
到
<td><?php echo debug($job); ?> </td>
这将有助于显示是否正在检索数据但是以意外方式存储在$ job数组中。