php - 学说 2 分页

标签 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;

显示我要分页的记录。问题是分页需要简单的计数查询,并且不适用于像这样的选择。

Not all identifier properties can be found in the ResultSetMapping: username

所以要对其进行分页,我必须始终使用两个查询 - 上面的一个用于显示记录,另一个用于计算记录,两者都使用连接。它会显着降低性能。

我使用 knplabs paginator、symfony 2 和 doctrine 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.username ..)..

关于php - 学说 2 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24837913/

相关文章:

java - eclipse中的.sql文件,将其显示为表格?

php - Doctrine - ManyToMany 关系没有正确删除

php - MySql/php - 标签系统

php - 阻止从地址栏访问仪表板部分

php - Facebook 评论插件返回错误 "Object Invalid Value"

MySQL多次更新错误

javascript - PHP 字符串与 Javascript 兼容(引号)

c# - 在 while 循环中返回

android - 如何在 iOS 中使用 WSSE 和 salted sha512 超过 1 次迭代

php - 添加 Symfony 应用程序时出现 JSON_ERROR