Php symfony原则分页带来的数据比每页设置的数据多

Php symfony原则分页带来的数据比每页设置的数据多,php,symfony1,doctrine,symfony-1.4,doctrine-1.2,Php,Symfony1,Doctrine,Symfony 1.4,Doctrine 1.2,我在symfony pager中设置每页1行,但它显示的数据多于1行。这是因为我的查询将sfGuardUser表与其他表连接在一起,在某些情况下,当特定用户的“许可证”表中有多个条目时,会导致“sfGuardUser”行的重复!我的问题是: $pager = new sfDoctrinePager('sfGuardUser', '1'); $q = Doctrine_Query::create() ->select('u.

我在symfony pager中设置每页1行,但它显示的数据多于1行。这是因为我的查询将sfGuardUser表与其他表连接在一起,在某些情况下,当特定用户的“许可证”表中有多个条目时,会导致“sfGuardUser”行的重复!我的问题是:

    $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();

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

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

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

DISTINCT u.id, u.username

DISTINCT在第1.2条中不起作用。最好使用GROUPBY。@27:GROUPBY在这种情况下不起作用。我想对查询返回的数据集进行分页。在这种情况下,假设有3个用户(a、b、c),用户a有3个不同的许可证,而其他用户没有。加入将为用户“a”生成3行,其中包含相应的许可证信息;为用户“b”和“c”生成2行,其中许可证相关列中包含空值。我想给这个结果集分页。目前,它分页,以便一次显示所有与用户“a”相关的数据,然后逐个分页。。