首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个页面的300个元素中只有50个KnpPaginator加载结果

每个页面的300个元素中只有50个KnpPaginator加载结果
EN

Stack Overflow用户
提问于 2017-09-13 07:05:36
回答 1查看 26关注 0票数 0

我有一个查询,它搜索所有元素并使用分页器显示它们。我有一个控制器,我使KnpPaginator工作。

当我加载我的页面时,它会加载所有的300个元素,然后将每个页面分割成10个元素。

我如何才能实际加载50乘50,而不加载所有,并使它们在我的分页顺序?

我的控制器

代码语言:javascript
复制
    private function resultsAction(User $user, $type, $archive, Request $request)
{
    $em = $this->getDoctrine()->getManager();

   // $results = $em->getRepository("STUserBundle:Operation")->setQueryByTypeAndPro($type, $user, $archive);

    $dql = "SELECT opn FROM STuserBundle:Operation opn";
    $query = $em->createQuery($dql);
    /**
     * @var $paginator \Knp\Component\Pager\Paginator
     */
    $paginator = $this->get('knp_paginator');
    $results = $paginator->paginate(
        $query,
        $request->query->getInt('page',1),
        $request->query->getInt('limit',50)
    );

    return array("results" => $results, "archive" => $archive);
}

查询

代码语言:javascript
复制
public function findByTypeAndPro($type, User $user, $archive)
{
    return $this->createQueryBuilder("opn")
                ->andWhere("opn.type = :type")
                ->setParameter("type", $type)
                ->andWhere("opn.resellerId = :reseller")
                ->setParameter("reseller", $user->getId())
                ->andWhere("opn.archive = :archive")
                ->setParameter('archive', $archive)
                ->orderBy("opn.dateCreation", "DESC")
                ->getQuery()
                ->getResult()
    ;
}

所以我可以为此创建一个新的查询吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-13 07:41:49

执行查询。我建议构建该查询并将其提供给KNPPaginatorBundle以进一步操作分页。因此,您的存储库变成:

代码语言:javascript
复制
public function findByTypeAndPro($type, User $user, $archive)
{
    $qb = $this->createQueryBuilder("opn")
                ->andWhere("opn.type = :type")
                ->setParameter("type", $type)
                ->andWhere("opn.resellerId = :reseller")
                ->setParameter("reseller", $user->getId())
                ->andWhere("opn.archive = :archive")
                ->setParameter('archive', $archive)
                ->orderBy("opn.dateCreation", "DESC")
    ;
    return $qb;
}

这样,KNP就可以通过查询处理分页,而且不会太重。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46190987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档