哪个是教条symfony2的最佳分页符?

时间:2014-02-13 11:44:47

标签: symfony doctrine paging

我在我的存储库类中编写了自定义查询,然后返回数组然后我对这些数组进行了一些处理,然后显示为twig。

因此,请建议使用最佳分页方法对此自定义查询应用分页,从而生成数组。

我是symfony2的新手,默认分页会起作用吗?我的意思是什么语法,请提供示例。

2 个答案:

答案 0 :(得分:0)

您应该尝试Knp Paginator。它简单且可定制。 简单的代码示例(Doctrine MongoDB ODM):

// Pay attention: query, not result.
$query = $this->getRepositoryOfferKind()->createQueryBuilder()
  ->field('is_private')->equals(false)
  ->field('is_deleted')->notEqual(true)
  ->sort('updated_at', 'DESC')->getQuery();

$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate($query, $request->get('page', 1), 20);
/* @var $pagination SlidingPagination */
$pagination->setUsedRoute('admin_offer_kind_index');
$pagination->setPageRange(10);

return array(
  'objects' => $pagination,
);

还有树枝:

    <table>
      <thead>
      <tr>
        <th>Title</th>
      </tr>
    </thead>
    <tbody>
    {% for object in objects %}
        <tr>
            <td>
                {{ object.title }}
            </td>
        </tr>
    {% else %}
        <tr>
            <td>No data</td>
        </tr>
    {% endfor %}
    </tbody>
    <tfoot>
    <tr>
        <td>
            {{ knp_pagination_render(objects) }}
        </td>
    </tr>
    </tfoot>
</table>

答案 1 :(得分:0)

您可以尝试这种原生解决方案

public function getPagination($someValue, int $page = 1, $limit = 20, $sort = "createdAt", $sortOrder = 'DESC')
{
     $qb = $this->createQueryBuilder();
     $qb->field('some_filed')->equals($someValue);
     // and so on
     return $qb->sort($sort, $sortOrder)
        ->skip(($page - 1) * $limit)
        ->limit($limit)
        ->getQuery()->toArray();
}