Zend和数据映射器 - 如何从多个表中获取数据

时间:2015-09-09 01:28:45

标签: php oop object zend-framework datamapper

我是Data Mappers概念的新手,到目前为止我只使用了Active Record。

我有以下MySQL表:

日历

  • ID
  • idEvent
  • 日期

事件

  • ID
  • 名称

我需要获取今天之前发生的所有事件的名称和日期。

归档此内容的最有效结构是什么?如果我需要为每个日历条目创建对象,我将变得非常困惑,以及如何从日历表和事件表中的id链接idEvent。

1 个答案:

答案 0 :(得分:0)

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对象。