我一直在尝试在同一页面中显示来自不同模型的数据,但仍然无法正常工作。这就是模型之间的关系
客户hasMany作业
Job belongsTo客户
作业hasMany作业任务
作业任务belongsTo作业
Jobtask hasMany作业任务车辆
作业任务车辆belongsTo作业任务和车辆
车辆hasMany作业任务车辆
这是我的作业控制器
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'
),
),
),));
我要做的是显示来自客户,工作,工作任务,工作任务车辆,车辆模型的数据。我可以从Customer、Job和Jobtask获取数据显示,但不能从Jobtask车辆和车辆模型获取数据显示。我想要显示分配给每个作业任务的每个车辆(车辆模型)。
这就是我想要在同一个表中显示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>?>
发布于 2011-10-14 21:07:47
看起来一切都很好,您需要将查找放在recursive = 3中,如下所示
$job = $this->Job->find('first', array(
'conditions' => array('Job.id' => $id),
'recursive' => 3,
'contain' => array('Customer',
'Jobtask' => array(
'Jobtasksvehicle' => array(
'Vehicle'
),
),
),
));但是可容纳的行为仍然应该计算递归自动,确保你正在加载可容纳的行为。
查看有关containable behaviour的书籍
还要检查是否正在执行sql查询,如果出现sql查询,您可能需要指定字段(您可能希望使用Job.* o Vehicle.*来获取所有字段...)
https://stackoverflow.com/questions/7763022
复制相似问题