Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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 第2条分页_Php_Mysql_Symfony_Doctrine Orm_Pagination - Fatal编程技术网

Php 第2条分页

Php 第2条分页,php,mysql,symfony,doctrine-orm,pagination,Php,Mysql,Symfony,Doctrine Orm,Pagination,我使用以下查询: SELECT u.username, u.password, s.name, s.price FROM AcmeBundle:User u LEFT JOIN AcmeBundle:Shop s WITH u.id = s.id; 显示我要分页的记录。问题是分页需要简单的计数查询,不能像这样使用select Not all identifier properties can be found in the ResultSetMapping: username 因此,要对其进

我使用以下查询:

SELECT u.username, u.password, s.name, s.price
FROM AcmeBundle:User u
LEFT JOIN AcmeBundle:Shop s
WITH u.id = s.id;
显示我要分页的记录。问题是分页需要简单的计数查询,不能像这样使用select

Not all identifier properties can be found in the ResultSetMapping: username
因此,要对其进行分页,我必须始终使用两个查询—上面的一个用于显示记录,另一个用于计数记录,这两个查询都带有联接。这大大降低了性能

我使用knplabs paginator、symfony 2和ORM

你能给我一些建议吗?

应该是这样的

  $dql = 'SELECT user
         FROM AcmeBundle:User user
         LEFT JOIN AcmeBundle:Shop shop
         WITH user.id = shop.id';
  $query = $em->createQuery($dql);
  $paginator  = $this->get('knp_paginator');
  $pagination = $paginator->paginate(
        $query,
        $this->get('request')->query->get('page', 1)/*page number*/,
        10/*limit per page*/
    );
  return array(
        'pagination' => $pagination,
    );
整个对象“user”而不是属性(user.username..)应该在paginator中传递。

提供了一个合理的解决方案,如@gabriel所述。IOW:

SELECT PARTIAL u.{username, password, name, price} // ...

然后你应该传递整个“user”或“shop”对象作为分页参数,然后在twig中获取相关属性值,请参见我的更新答案请参见