Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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

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
Php 带findAll()方法的Knp分页器_Php_Symfony_Doctrine Orm_Pagination_Knppaginator - Fatal编程技术网

Php 带findAll()方法的Knp分页器

Php 带findAll()方法的Knp分页器,php,symfony,doctrine-orm,pagination,knppaginator,Php,Symfony,Doctrine Orm,Pagination,Knppaginator,我有一个问题,knp paginator只能这样工作: $em = $this->get('doctrine.orm.entity_manager'); $dql = "SELECT a FROM MainArtBundle:Art a"; $query = $em->createQuery($dql); $paginator = $this->get('knp_paginator'); $pagination = $pa

我有一个问题,knp paginator只能这样工作:

    $em    = $this->get('doctrine.orm.entity_manager');
    $dql   = "SELECT a FROM MainArtBundle:Art a";
    $query = $em->createQuery($dql);


    $paginator  = $this->get('knp_paginator');
    $pagination = $paginator->paginate(
        $query,
        $this->get('request')->query->get('page', 1)    /*page number*/,
        8                                        /*limit per page*/
    );
但不是这样:

    $em         = $this->getDoctrine()->getManager();
    $entities   = $em->getRepository('MainArtBundle:Art')->findAll();

    $paginator  = $this->get('knp_paginator');
    $pagination = $paginator->paginate(
        $entities,
        $this->get('request')->query->get('page', 1)    /*page number*/,
                                                      /*limit per page*/
    );
为什么是这样?我不明白

这是我的电话:

<li>{{ knp_pagination_sortable(paginator, 'Oldest', 'a.id', {'direction': 'desc'}) }}</li>
  • {{knp_pagination_sortable(paginator,'Oldest','a.id',{'direction':'desc'}}}

  • 问候Michael

    FindAll返回一个数组。knp分页器需要一个条令查询对象。

    knp不支持数组元素的排序,如前所述

    在数据库级别更好地提取和排序数据。在第二个示例中,从表中获取所有数据(可以更大),然后请求分页器限制这些数据。这不太好。因此,最好使用查询来完成这项工作,并让我们管理paginator元素

    目前KNP分页器可以分页:

    • 数组
    • 条令\ORM\Query
    • 条令\ORM\QueryBuilder
    • Doctrine\ODM\MongoDB\Query\Query
    • Doctrine\ODM\MongoDB\Query\Builder
    • 条令\Common\Collection\ArrayCollection
      -任何条令关系集合,包括
      ModelCriteria
      -推进ORM查询
    • 包含
      Solarium\u客户端
      Solarium\u查询\u选择
      作为元素的数组
    有关详细信息,请参见

    我的2美分findAll()与Knp_paginator兼容,您只需将其交给您的paginator即可:

    $query=$em->getRepository('Acme\FOOBundle\Entity\BAR')->findAll();
    $paginator=$this->get('knp_paginator');
    请求=$paginator->paginate(
    $query,
    $this->get('request')->query->get('page',1),
    5.
    );您可以尝试以下方法:

    $query = $repository->createQueryBuilder('a');
    
    你也可以试试这个:

    public function index(PaginatorInterface $paginator, Request $request): Response
    {
        $properties = $paginator->paginate(
            $this->repository->findAllVisibleQuery(),
            $request->query->getInt('page', 1),
            10
         );
         return $this->render('pages/property.html.twig',[
             'current_menu'=> 'properties',
             'properties'=> $properties
             ]);
    }
    

    同样,使用简单的findAll()方法也不可能做到这一点?简单的回答是不,你不能。您需要创建自己的存储库方法。当前paginator可以对各种类型进行分页,请参阅详细信息knp paginator甚至不支持普通数组吗?我从一个存储过程中获取数据,然后返回一个数组。是否也可以对一个简单的字符串进行分页?我添加了有关可以分页的文档参考。如果您有一个字符串数组,则是:您可以对其进行分页。你能提供更多关于你的问题的信息吗?同样,不可能像一本书那样简单地对一个长字符串进行分页?那么ajax是什么呢?对于一个ajax分页的站点来说,最简单的工作流是如何使用条令查询调用的?我不想有一个完整的教程,只有如何接近。。。谢谢。knp paginator甚至不支持普通数组吗?我从一个存储过程中获取数据,然后返回一个数组。Hi@adiii4是的,当然是列表的第一个。基于knp特性(knp分页可排序)的动态排序可能会有问题,我也有同样的问题。如果不建立某种新的查询,我无法直接分页实体。我的意思是,我已经有了我喜欢的查询和实体用法,我只是想向其中添加paginate,而文档只显示了如何以一种方式进行。。正如你的问题所表明的。。奇怪的是,在我的例子中,这一错误是逐渐形成的,这是非常错误的。。我想把它添加到这个主题中,因为搜索能力
    试图在类“Symfony\Component\HttpFoundation\JsonResponse”上调用方法“getTemplate”。(500内部服务器错误)
    在第56行的vendor/knplabs/knp paginator bundle/Twig/Extension/PaginationExtension.php中,
    $template?:$pagination->getTemplate(),