Cakephp 对不同的记录进行分页

Cakephp 对不同的记录进行分页,cakephp,cakephp-1.3,Cakephp,Cakephp 1.3,这就是我想做的。 我的表显示(课程)有多个id相同的条目 当我从paginate获取数据时,它会显示所有记录。因此,如果我有3条Id为5的记录,它将显示记录编号5三次 现在我想要的是,它应该只显示一次记录 我在网上搜索过,但什么也没找到 如果有人遇到这样的问题,并找到了解决办法,请让我知道 谢谢,查看CakePHP食谱,分页文档显示您可以覆盖$paginate成员。在幕后,这类似于为模型的find('all')传递参数。也许可以尝试设置参数来显式返回您对distinct关键字感兴趣的FILD,以

这就是我想做的。 我的表显示(课程)有多个id相同的条目

当我从paginate获取数据时,它会显示所有记录。因此,如果我有3条Id为5的记录,它将显示记录编号5三次

现在我想要的是,它应该只显示一次记录

我在网上搜索过,但什么也没找到

如果有人遇到这样的问题,并找到了解决办法,请让我知道


谢谢,

查看CakePHP食谱,分页文档显示您可以覆盖$paginate成员。在幕后,这类似于为模型的find('all')传递参数。也许可以尝试设置参数来显式返回您对distinct关键字感兴趣的FILD,以缩小所需的值

class RecipesController extends AppController {

    var $paginate = array(
        'fields' => array('Model.field1', 'DISTINCT Model.field2')
    );

}

查看CakePHP食谱,分页文档显示您可以覆盖$paginate成员。在幕后,这类似于为模型的find('all')传递参数。也许可以尝试设置参数来显式返回您对distinct关键字感兴趣的FILD,以缩小所需的值

class RecipesController extends AppController {

    var $paginate = array(
        'fields' => array('Model.field1', 'DISTINCT Model.field2')
    );

}

下面是我的paginate变量的样子:

var $paginate = array(
            'Courses'    => array(
                'limit'    => 20,
                'page'    => 1,
                'order'    => array(
                'Courses.id'    => 'asc')
),
);
条件变量如下所示:

        $cond = array("Courses.id LIKE "=>$this->data['id_search'],
        "Courses.length LIKE "=>$this->data['length_search'], 
        "Courses.marks LIKE "=>$this->data['marks']
        );
我就是这样称呼帕吉纳的

$data = $this->paginate('CdmaRfReport',$cond);
我试过了

$paginate = array(
                'Courses'    => array(
                    'limit'    => 20,
                    'fields' => array('DISTINCT Courses.id'),
                    'page'    => 1,
                    'conditions' => $cond,
                    'group'   => array('id'),
                    'order'    => array(
                    'Courses.id'    => 'asc')
        )
        );
这似乎没有帮助

我也试过了

$cond = array("DISTINCT Courses.id "=>$this->data['id_search'],
        "Courses.length LIKE "=>$this->data['length_search'], 
        "Courses.marks LIKE "=>$this->data['marks']
        );
即使这样也会出错 我可能有点不对劲。但我没办法弄明白


任何建议请告诉我。

下面是我的paginate变量的样子:

var $paginate = array(
            'Courses'    => array(
                'limit'    => 20,
                'page'    => 1,
                'order'    => array(
                'Courses.id'    => 'asc')
),
);
条件变量如下所示:

        $cond = array("Courses.id LIKE "=>$this->data['id_search'],
        "Courses.length LIKE "=>$this->data['length_search'], 
        "Courses.marks LIKE "=>$this->data['marks']
        );
我就是这样称呼帕吉纳的

$data = $this->paginate('CdmaRfReport',$cond);
我试过了

$paginate = array(
                'Courses'    => array(
                    'limit'    => 20,
                    'fields' => array('DISTINCT Courses.id'),
                    'page'    => 1,
                    'conditions' => $cond,
                    'group'   => array('id'),
                    'order'    => array(
                    'Courses.id'    => 'asc')
        )
        );
这似乎没有帮助

我也试过了

$cond = array("DISTINCT Courses.id "=>$this->data['id_search'],
        "Courses.length LIKE "=>$this->data['length_search'], 
        "Courses.marks LIKE "=>$this->data['marks']
        );
即使这样也会出错 我可能有点不对劲。但我没办法弄明白


任何建议请告诉我。

我遇到了你的问题,因为我也遇到了类似的问题。David Z的解决方案不适用于我,但我确实发现$paginate中的组变量适用于我

因此,使用上面的代码示例,我认为它应该是这样工作的

$paginate = array(
            'Courses'    => array(
            'limit'    => 20,
            'fields' => array('Courses.id'),
            'conditions' => $cond,
            'group'   => array('Courses.id'),
            'order'    => array('Courses.id' => 'asc')
    )
    );
为了更好地了解对我有效的解决方案,我有一些属于公司的系统。我想得到一份我拥有的系统的独特公司的名单。这正是我使用的代码,对我有效

$this->paginate = array ('fields' => array ('Company.*'),
                         'order' => array('Company.name' => 'ASC'),
                         'group' => array('Company.id'));
$this->set('companies', $this->paginate($this->Company->System));

希望这对我有所帮助

我遇到了你的问题,因为我也遇到了类似的问题。David Z的解决方案不适用于我,但我确实发现$paginate中的组变量适用于我

因此,使用上面的代码示例,我认为它应该是这样工作的

$paginate = array(
            'Courses'    => array(
            'limit'    => 20,
            'fields' => array('Courses.id'),
            'conditions' => $cond,
            'group'   => array('Courses.id'),
            'order'    => array('Courses.id' => 'asc')
    )
    );
为了更好地了解对我有效的解决方案,我有一些属于公司的系统。我想得到一份我拥有的系统的独特公司的名单。这正是我使用的代码,对我有效

$this->paginate = array ('fields' => array ('Company.*'),
                         'order' => array('Company.name' => 'ASC'),
                         'group' => array('Company.id'));
$this->set('companies', $this->paginate($this->Company->System));
希望这有所帮助