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中获取相关属性值,请参见我的更新答案请参见