我正在感受CakePHP,尝试复制我已经在vanilla PHP中做的事情。
我有2个表,events
和eventlist
。 events
包含有关活动的一般信息。 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
中做一些事情来将数据加载到数组中。任何帮助表示赞赏。
答案 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
,其数据来自存储在这些键中的每个表。