Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在条令symfony2中,哪一个是最好的分页器?_Symfony_Doctrine_Paging - Fatal编程技术网

在条令symfony2中,哪一个是最好的分页器?

在条令symfony2中,哪一个是最好的分页器?,symfony,doctrine,paging,Symfony,Doctrine,Paging,我在我的repository类中编写了自定义查询,它们返回数组,然后我对这些数组进行一些处理,然后显示给twig 因此,请建议最好的分页方法,以便在生成数组的自定义查询上应用分页 我不熟悉symfony2,默认分页是否有效,如何工作?我的意思是什么语法,请提供示例。您应该试试。它简单且可定制。 MongoDB ODM的简单代码示例: // Pay attention: query, not result. $query = $this->getRepositoryOfferKind()-&

我在我的repository类中编写了自定义查询,它们返回数组,然后我对这些数组进行一些处理,然后显示给twig

因此,请建议最好的分页方法,以便在生成数组的自定义查询上应用分页

我不熟悉symfony2,默认分页是否有效,如何工作?我的意思是什么语法,请提供示例。

您应该试试。它简单且可定制。 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>

您可以尝试此本机解决方案

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();
}