Я новичок в концепции Data Mappers, и до сих пор я использовал только Active Record.
У меня есть следующие таблицы MySQL:
Календарь
События
Мне нужно получить имена и даты всех событий, которые произошли до сегодняшнего дня.
Какая структура наиболее эффективна для архивирования? Я очень запутался, если мне нужно создавать объекты для каждой записи Календаря, и как я буду связывать idEvent из таблицы календаря и id из таблицы событий.
В 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
объект связан с ним.
Других решений пока нет …