Cakephp 从不同模型检索数据

Cakephp 从不同模型检索数据,cakephp,model,Cakephp,Model,我一直试图在同一页中显示来自不同模型的数据,但仍然无法使其正常工作。 这就是模型之间的关系 客户有很多工作 属于客户的工作 Job有许多Job任务 作业任务属于作业 Jobtask有许多Jobtasksvehicle 作业任务车辆属于作业任务和车辆 车辆有许多工作任务车辆 这是我的工作控制器 function sch($id = null) { if (!$id) { $this->Session->setFlash(__('Invalid job',

我一直试图在同一页中显示来自不同模型的数据,但仍然无法使其正常工作。 这就是模型之间的关系

客户有很多工作

属于客户的工作

Job有许多Job任务

作业任务属于作业

Jobtask有许多Jobtasksvehicle

作业任务车辆属于作业任务和车辆

车辆有许多工作任务车辆

这是我的工作控制器

    function sch($id = null) {
    if (!$id) {
        $this->Session->setFlash(__('Invalid job', true));
        $this->redirect(array('action' => 'index'));
    }
    $job = $this->Job->find('first', array(
'conditions' => array('Job.id' => $id),
'contain' => array('Customer',
    'Jobtask' => array(
        'Jobtasksvehicle' => array(
            'Vehicle'
         ),
     ),
),
)))

我要做的是显示来自客户、作业、作业任务、作业任务车辆、车型的数据。 我可以从客户、作业和作业任务中获取数据显示,但不能从作业任务车辆和车型中获取数据显示。我想显示分配给每个作业任务的每个车辆(vehiclemodel)

这就是我想在同一个表中显示jobtask和车辆模型的地方

    <?php
    $i = 0;
    foreach ($job['Jobtask'] as $jobtask):
        $class = null;
        if ($i++ % 2 == 0) {
            $class = ' class="altrow"';
        }
    ?>
    <tr<?php echo $class;?>>
        <td><?php echo $jobtask['id'];?></td>
        <td><?php echo $jobtask['job_id'];?></td>
        <td><?php echo $jobtask['rate_id'];?></td>
        <td><?php echo $jobtask['type'];?></td>
        <td><?php echo $jobtask['date'];?></td>
        <td><?php echo $jobtask['starttime'];?></td>
        <td><?php echo $jobtask['timeband'];?></td>
        <td><?php echo $jobtask['settlement'];?></td>       
        <td><?php echo $job['Vehicle']['vehiclemodel'];?></td>
    </tr>
<?php endforeach; ?>
</table>


?>

一切似乎都很好,您需要将查找结果放在recursive=3中,如下所示

  $job = $this->Job->find('first', array(
      'conditions' => array('Job.id' => $id),
      'recursive' => 3,
      'contain' => array('Customer',
            'Jobtask' => array(
               'Jobtasksvehicle' => array(
               'Vehicle'
                ),
            ),
       ),
   ));
但是containable行为仍然应该计算递归自动,确保您正在加载containable行为

查一下这本书


还要检查是否正在执行sql查询,如果出现sql查询,您可能需要指定字段(您可能希望使用Job.*o Vehicle.*获取所有字段…

查找功能似乎是正确的。您是否尝试调试$job变量?您查看的记录是否可能没有JobsTasksVehicle和Vehicle关联?