如何限制CakePHP查询的输出?

时间:2014-06-20 10:50:53

标签: php mysql cakephp

我正在尝试学习CakePHP,并尝试使用Cake复制标准PHP和MySQL所能做的事情。

我有一个包含事件信息的event表,以及一个list_items表,其中包含要在每个事件页面上显示的项目符号列表的条目。 list_items表包含3列:idevent_idlistinfo。后者是要显示的字符串。

我已将两个表联系起来:

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)的工作方式感到有点困惑。

1 个答案:

答案 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);,您将看到数据的确切内容,并可以帮助您更好地可视化关联。