循环遍历CakePHP中的相关数据

时间:2014-06-19 12:05:20

标签: php cakephp

我正在感受CakePHP,尝试复制我已经在vanilla PHP中做的事情。

我有2个表,eventseventlistevents包含有关活动的一般信息。 eventlist包含在每个事件页面上显示为项目符号列表的信息。

eventlist由一个id,一个event_id组成,它将每个条目链接到event表中的相关事件,以及一个显示在页面上的字符串。在vanilla PHP中,我只需SELECT list_info FROM eventlist WHERE event_id = 1或其他任何东西,然后遍历生成的数组。

但是,我不知道从哪里开始在CakePHP中,我不知道我是如何搜索它的。

我已经在两个表之间创建了一个关联:

class Event extends AppModel{

    public $hasMany = array(
        'EventList'
        );

}

class EventList扩展了AppModel {

public $useTable = 'eventlist';

public $belongsTo = array(
    'Event'
);

}

我为Event设置了一个简单的视图:

<h2><?php echo $event['Event']['event_name'] ?></h2>

<p><?php echo $event['Event']['event_description']?></p>

<h3>£<?php echo $event['Event']['event_cost']?></p>

但现在我不知道该怎么做 - 我是CakePHP和MVC的新手。我假设我需要在EventListController中做一些事情来将数据加载到数组中。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

默认情况下,您设置的关系应在查询事件时返回关联的数据。有许多方法可以以可显示的格式获取数据,例如使用HTML帮助程序输出(未)有序列表。但是,下面的例子应该有所帮助。

此外,通过在控制器中查找记录来调试结果的快速方法是使用pr(print_r的别名),例如pr($event);exit;。还有其他调试方法,但如果您在本地工作,这是一种快速而肮脏的方法。

控制器

$event = $this->Event->findById(`event_id`);
$this->set(compact('event'));

视图

<h2><?php echo $event['Event']['event_name'] ?></h2>
<p><?php echo $event['Event']['event_description']?></p>
<p>£<?php echo $event['Event']['event_cost']?></p>
<!-- Output each list item in a paragraph -->
<p>
    <?php foreach($event['EventList'] as $listItem:
       echo $listItem['ListItemColumn'];
    endforeach; ?>
</p>

再次......获取和输出这些数据的方法很多,但是长和短的是返回的结果应该有一个数组键Event和一个数组键EventList,其数据来自存储在这些键中的每个表。