我正在使用可包含将关联的记录拉入视图操作,并在遍历结果时收到错误消息。
另外,我使用的是“sluggable”行为,所以查找操作有一个条件来搜索这个变量。
当我在视图中调试 find 变量时,我确实看到了正确的记录。但是当我尝试在视图中遍历它们时,我得到了“通知(8):未定义的索引:错误。” 理想情况下,我喜欢了解如何解决此错误,因为它偶尔会发生。
模型设置为:
比赛有很多比赛详情
比赛详情有很多更新
我要显示的记录是:
锦标赛->锦标赛详情->更新
锦标赛控制器如下所示:
$tournament = $this->Tournament->find('first', array(
'conditions' => array( 'slug' => $slug),
'contain' => array(
'TournamentDetail' => array(
'Update' => array('order' => 'Update.id DESC'),
))));
锦标赛视图操作如下所示:
<?php foreach ($tournament ['Update'] as $update): ?>
<h3>Update: <?php echo $update ['Update']['date']; ?></h3>
<h4><?php echo $update['Update']['title']; ?></h4>
<p><?php echo $update ['Update']['body']; ?></p>
<hr/>
<?php endforeach; ?>
调试时视图中的“更新”数据如下所示:
[Update] => Array
(
[0] => Array
(
[id] => 2
[title] => Indoor Challenge
[date] => 2010-03-19
[body] => Congratulations 2010 Champion
[tournament_detail_id] => 4
[homeStatus] => no
)
[1] => Array
(
[id] => 1
[title] => first round matches start today
[date] => 2010-03-19
[body] => this tournament's first round matches start today.
[tournament_detail_id] => 4
[homeStatus] => no
)
循环浏览“更新”时,我是否忽略了一些非常明显的东西?
谢谢,保罗
解析度
感谢大家的投入。退后几步后,我突然想到“未定义的索引”发生了什么以及有关如何循环的评论。
问题是 foreach 循环没有嵌套,它只在第一级关联上循环。foreach 循环处理具有许多“锦标赛详细信息”的“锦标赛”。
循环需要更深一层到具有许多“更新”的“锦标赛详细信息”。
这是在视图中解决此问题的代码。
<?php foreach ($tournament['TournamentDetail'] as $tournamentDetail): ?>
<?php foreach ($tournamentDetail ['Update'] as $update): ?>
<h3>Update: <?php echo $update['date']; ?></h3>
<h4><?php echo $update['title']; ?></h4>
<p><?php echo $update['body']; ?></p>
<hr/>
<?php endforeach; ?>
<?php endforeach; ?>
如果其他人希望了解如何使用具有多个关联级别的可包含行为,请记住,您可能必须在视图中嵌套 foreach 循环才能显示您所追求的结果。
干杯,保罗