我使用以下查询:
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/