symfony doctrine分页带来的数据多于每页设置的数据

时间:2011-09-07 12:17:23

标签: php symfony1 doctrine symfony-1.4 doctrine-1.2

我在symfony pager中每页设置1行,但是它显示的数据多于1,这是因为我的查询与其他表一起加入了sfGuardUser表,并且在某些情况下导致重复'sfGuardUser'行是该特定用户的'license'表中的多个条目!这是我的疑问:

    $pager = new sfDoctrinePager('sfGuardUser', '1');

     $q = Doctrine_Query::create()
                        ->select('u.id, u.username, g.name, l.id, l.status,             l.client_id, l.vendor_id, l.applied_date, p.org_name')
                        ->from('sfGuardUser u')
                        ->leftJoin('u.Profile p')
                        ->leftJoin('u.Groups g')
                        ->leftJoin('u.LicensedClients l')
                        ->where('g.name = \'vendor\'')
                        ->orderBy('l.applied_date');

     $q->setHydrationMode(Doctrine_Core::HYDRATE_SCALAR);

     $pager->setQuery($q);
     $pager->setPage($request->getParameter('page', 1));
     $pager->init();

分页存在,但问题是在某些情况下,当许可证表中的特定用户有多行时,在一个页面中显示多行。如何以正确的方式实施?

1 个答案:

答案 0 :(得分:-1)

在通过(sfGuard)用户进行分页时,您希望通过加入用户和许可证表(1:n关系)来实现什么目标?

如果要按许可证类型/日期/计数对用户进行排序,可以使用

DISTINCT u.id, u.username