我们可以使用KnpPaginatorBundle在Symfony 4中基于2个实体创建分页吗?

时间:2018-08-03 10:33:55

标签: php symfony pagination symfony4 knppaginator

如果KnpPaginatorBundle可以处理基于2个(或更多)实体的分页,我在网上找不到任何地方。

说我的网站上有一个社交页面,我想列出上周有关给定主题的所有reddits和Twitter帖子。我一直在将这些数据剪贴在数据库中。

现在,我想通过分页捆绑包以方便的方式显示它。为此,我希望一方面合并reddit,另一方面合并Twitter的50/50实体集。

这有可能吗?如果不是,您建议如何对一组同时显示的2个不同实体进行分页?

请注意,两个实体都通过ManyToMany链接到另一个实体Topic,但是我不认为knppaginatorbundle可以基于关系实体处理分页(它可以使用offset和maxresult进行左联接吗?不确定)

谢谢!

1 个答案:

答案 0 :(得分:1)

我在我的一个项目中尝试过类似的方法:

{
     $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));
    }