Zend и data mappers - как получить данные из нескольких таблиц

72
8

Я новичок в концепции Data Mappers, и до сих пор я использовал только Active Record.

У меня следующие таблицы MySQL:

Календарь

    Я бы idEvent Дата

Мероприятия

    Я бы имя

Мне нужно получить имена и даты всех событий, которые произошли до сегодняшнего дня.

Какая самая эффективная структура для ее архивации? Я очень запутался, если мне нужно создать объекты для каждой записи Календаря и как я свяжу idEvent с таблицей календаря и идентификатором из таблицы событий.

спросил(а) 2015-09-09T04:28:00+03:00 4 года, 6 месяцев назад
1
Решение
89

В yourProjectRootFolder/application/Module/models/mappers/CalendarMapper.php (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.

ответил(а) 2015-09-09T10:28:00+03:00 4 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема