我正在尝试学习CakePHP,并尝试使用Cake复制标准PHP和MySQL所能做的事情。
我有一个包含事件信息的event
表,以及一个list_items
表,其中包含要在每个事件页面上显示的项目符号列表的条目。 list_items
表包含3列:id
,event_id
,listinfo
。后者是要显示的字符串。
我已将两个表联系起来:
class Event extends AppModel{
public $hasMany = array(
'ListItem'
);
}
和
class ListItem extends AppModel{
public $belongsTo = array(
'Event'
);
}
并且事件控制器具有基于ID查找事件的查询:
public function view($id = null){
if (!$id){
throw new NotFoundException(__('Invalid Course'));
}
$event = $this->Event->findById($id);
if (!$event){
throw new NotFoundException(__('Invalid event'));
}
$this->set('event',$event);
}
我设置了我的视图:
<?php
foreach($event['ListItem'] as $listItem):
echo $this->Html->nestedList($listItem);
endforeach; ?>
我的问题是,这会在list_items
输出所有:
1
1
This is list item 1
2
1
This is list item 2
e.g。键和实际的字符串。
如何将输出限制为字符串?我对协会(heck和MVC)的工作方式感到有点困惑。
答案 0 :(得分:1)
Html::nestedList()
用于关联数组,而不是索引。
example cake gives显示您何时使用它。
对于您的情况,您可以这样做:
foreach($event['ListItem'] as $listItem):
echo 'ListItem ID: ' . $listItem['id'] . ' is ' . $listItem['listinfo'] .
' and belongs to Event:' . $listItem['event_id'];
endforeach;
如果您在视图中的某个位置debug($event);
,您将看到数据的确切内容,并可以帮助您更好地可视化关联。