标签: knppaginatorbundle

如何使用KNPPaginatorBundle使用Doctrine Repository对结果进行分页?

我正在研究一个Symfony2项目,我决定使用KNPPaginatorBundle构建一个简单的分页系统.所以我创建了一个Product实体,我想将paginator添加到indexAction动作(由CRUD命令生成).

// Retrieving products.
$em = $this->getDoctrine()->getManager();

//$entities = $em->getRepository('LiveDataShopBundle:Product')->findAll();

$dql   = "SELECT a FROM LiveDataShopBundle:Product a";
$entities = $em->createQuery($dql);

// Creating pagnination
$paginator  = $this->get('knp_paginator');
$pagination = $paginator->paginate(
    $entities,
    $this->get('request')->query->get('page', 1),
    20
);
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我想使用产品的存储库,而不是直接在控制器中创建查询.我怎样才能做到这一点 ?实际上,直接将结果集合添加到paginate对象的速度太慢,因为它加载所有产品然后对ArrayCollection进行分页.

提前致谢.

K4

php pagination symfony knppaginator knppaginatorbundle

10
推荐指数
1
解决办法
1万
查看次数

如何获取 Symfony 控制器中搜索查询的总计数

用例:我想将搜索查询和结果总数存储到数据库中,这样我就可以看到人们正在搜索的内容在我的应用程序中不存在。

\n\n

什么是有效的:我能够获取并存储查询,但我不知道如何获取搜索结果的总数。

\n\n

这是来自控制器的代码示例。当我当前尝试此操作时,我得到以下信息

\n\n
\n

错误:可捕获的致命错误:类对象\n Knp\\Bundle\\PaginatorBundle\\Pagination\\SlidingPagination 无法\n 转换为字符串

\n
\n\n

我尝试通过请求 $pagination[totalCount] 将 $pagination 像数组一样处理,但只是返回 null。

\n\n
 public function fpcAction(Request $request)\n    {\n\n            $query = dump($request->query->get(\'q\'));\n\n            $finder = $this->container->get(\'fos_elastica.finder.app.product\');\n            $page = $request->query->getInt(\'page\', 1);\n\n            $paginator = $this->get(\'knp_paginator\');\n            $results = $finder->createPaginatorAdapter($query);\n            $pagination = $paginator->paginate($results, $page, 12);\n\n\n\n            $searchmetrics = new SearchTerms();\n            $searchmetrics->setSearchterm($query);\n            $searchmetrics->setDate(time());\n\n            // TODO: Need to get the total qty of search results for this specific query\n            $searchmetrics->setResultsqty($pagination);\n\n            $entityManager = $this->getDoctrine()->getManager();\n            $entityManager->persist($searchmetrics);\n            $entityManager->flush();\n\n\n            return $this->render(\'default/search.html.twig\', [\'searchresults\' => $pagination, …
Run Code Online (Sandbox Code Playgroud)

php controller symfony knppaginator knppaginatorbundle

1
推荐指数
1
解决办法
3058
查看次数