【问题标题】:Zend and data mappers - how to get data from multiple tablesZend 和数据映射器 - 如何从多个表中获取数据
【发布时间】:2015-12-04 19:59:54
【问题描述】:
我是 Data Mappers 概念的新手,到目前为止我只使用过 Active Record。
我有以下 MySQL 表:
日历
活动
我需要获取今天之前发生的所有事件的名称和日期。
归档此文件最有效的结构是什么?如果我需要为每个日历条目创建对象,以及如何将日历表中的 idEvent 和事件表中的 id 链接起来,我会感到非常困惑。
【问题讨论】:
标签:
php
oop
object
zend-framework
datamapper
【解决方案1】:
在yourProjectRootFolder/application/Module/models/mappers/CalendarMapper.php 中(如果您不使用相同的目录结构,请根据您的目录结构修改路径):
<?php
class Module_Model_Mapper_Calendar extends Your_Abstract_Mapper
{
public function rowToObject($row)
{
$calendar = new Module_Model_Calendar();
$calendar->setDate($row->date);
if(!empty($row->idEvent))
{
$eventMapper = new Module_Model_Mapper_Event();
$event = $eventMapper->find($row->idEvent);
$calendar->setEvent($event);
}
return $calendar;
}
现在,每次您在控制器中调用 $calendarMapper->find($calendarId); 时,都应该为您提供 Calendar 对象和链接到它的 Event 对象。