我一直在尝试在同一页面中显示来自不同模型的数据,但仍无法使其正常工作。 这是模型之间的关系
客户有很多工作
作业属于客户
Job hasMany Jobtask
Jobtask belongsTo Job
Jobtask有很多Jobtasksvehicle
Jobtasksvehicle属于Jobtask and Vehicle
车辆有多个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'
),
),
),
));
我要做的是显示来自客户,工作,工作任务,Jobtasksvehicle,车辆模型的数据。 我可以从Customer,Job和Jobtask获取数据,但不能从Jobtasksvehicle和Vehicle模型中获取数据。我想显示分配给每个工作任务的每辆车(车辆模型)。
这是我想在同一个表中显示jobtask和Vehicle模型的地方。
<?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>
&GT;
答案 0 :(得分:0)
一切似乎都很好,你需要将find放在recursive = 3中,就像这样
$job = $this->Job->find('first', array(
'conditions' => array('Job.id' => $id),
'recursive' => 3,
'contain' => array('Customer',
'Jobtask' => array(
'Jobtasksvehicle' => array(
'Vehicle'
),
),
),
));
但仍然可以包含的行为应该自动计算递归,确保你正在加载可包容的行为。
的书同时检查是否正在执行sql查询,如果出现sql查询,则可能需要指定字段(您可能需要使用Job。* o Vehicle。*来获取所有字段...)