Я не смог найти где-нибудь в Интернете, если KnpPaginatorBundle может обрабатывать нумерацию страниц на основе 2 (или более) сущностей.
Скажем, у меня есть социальная страница на моем веб-сайте, где я хотел бы перечислить все реддиты и сообщения в Твиттере с прошлой недели по данной теме. Я собирал и сохранял эти данные в моей БД.
Теперь я хотел бы отобразить его в удобной форме с помощью пагинации. Для этого я хотел бы объединить 50/50 набор сущностей из, с одной стороны, reddit, а с другой стороны, из твиттера.
Возможно ли это сделать? Если нет, то что бы вы порекомендовали сделать для разбивки на две группы, отображаемые вместе?
Обратите внимание, что обе сущности связаны с другой сущностью Тема с ManyToMany, но я не думаю, что knppaginatorbundle может обрабатывать нумерацию страниц на основе реляционной сущности (может ли он выполнить левое соединение со смещением и maxresult? Не уверен)
Спасибо!
Я попробовал что-то подобное в одном из моих проектов:
{
$em = $this->getDoctrine()->getManager();
$query = "SELECT f1,f2,f3 FROM table1
UNION
SELECT f1,f2,f3 FROM table2";
$statement = $em->getConnection()->prepare($query);
$statement->execute();
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$query, /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
10/*limit per page*/
);
// parameters to template
return $this->render('...', array('pagination' => $pagination));
}
Других решений пока нет …