cakephp使用foreach显示来自不同模型的不同数据

时间:2011-10-24 02:50:55

标签: cakephp foreach

我一直在尝试使用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']; ?>&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时,我只从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;

1 个答案:

答案 0 :(得分:0)

如果更改

,可以发布debug($ job)的输出
 <td><?php echo $job['Jobtasksvehicle']['vehicle_id']; ?>&nbsp;</td>

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

这将有助于显示是否正在检索数据但是以意外方式存储在$ job数组中。