У меня есть две таблицы базы данных (давайте назовем их A и B) с таблицей мостов многие-ко-многим (AB).Я написал модели Zend_Db_Table для всех трех таблиц.
У меня есть объект A_Row, который я извлек из базы данных, используя, например, метод Zend_Db_Row :: find.Теперь мне нужно распечатать таблицу всех строк, которые связаны с этой строкой.Проблема в том, что мне нужно разбить эту таблицу на страницы, но она отображается с использованием метода B_Rowset.
Я вижу два варианта (если я хочу использовать Zend_Paginator)
1) Используйте Zend_Paginator_Adapter_Iterator для разбивки на страницы набора строк, возвращаемого findManyToManyRowset.Это будет выглядеть так:
$b_rowset = $a_row->findManyToManyRowset('B_Table', 'AB_Table');
$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Iterator($b_rowset));
Однако есть две проблемы:
a) Извлекается весь набор результатов (не только элементы на странице).
б) Я использую метод B_Rowset для рендеринга таблицы HTML, поэтому мне придется конвертировать результаты обратно в набор результатов.
Это решение кажется слишком уродливым.
2) Создайте Zend_Db_Table_Select вручную и используйте Zend_Paginator_Adapter_DbTableSelect.
Но создание многотабличных запросов с Zend_Db_Table_Select очень непросто (и результаты необходимо преобразовать в B_Rowset).Я, вероятно, в итоге получу около 50 строк грязного кода.
Я мог бы использовать любой из этих методов (и, скорее всего, это было бы быстрее, чем писать этот пост), но я хочу увидеть некоторые мнения,как решить это красиво (так как я ожидаю столкнуться с этим сценарием снова и снова).