Раньше у меня было findDependentRowset
в моих системах.Но не больше!В большинстве случаев это пустая трата ресурсов.Объединения таблиц должны быть в вашем операторе SQL.
См. Мой ответ здесь: Сделанные вручную запросы против findDependentRowset
Я все еще далек от использования Doctrine илиPropel (мне это никогда не было нужно).Может быть, когда-нибудь. (сейчас используется Доктрина 2 . Итак ... Я предлагаю вам то же самое сейчас)
СТАРЫЙ ОТВЕТ
После нескольких лет работы с Zend Framework я столкнулся со следующей архитектурой:
1) У меня есть абстрактный маппер, который расширяет все мои мапперы: Zf_Model_DbTable_Mapper
2) У меня также есть абстрактная модель (объект домена), похожая на шлюз данных строк, за исключением того, что он не является шлюзом.Это универсальный объект домена: Zf_Model
3) При заполнении графов объектов (SQL-соединения) один маппер делегирует другим мапперам, которые отвечают за данный объект.
Пример
Этот метод взят из абстрактного картографа:
public function getById($id)
{
$tableGateway = $this->getTable();
$row = $tableGateway->fetchRow('id =' . (int) $id);
if (!$row)
retur null;
$row = $row->toArray();
$objectName = $this->getDomainObjectName();
$object = new $objectName($row['id']);
$object->populate($row);
return $object;
}