0

所以这就是我想要做的。我的表说(课程)有多个具有相同 ID 的条目。

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

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

我在网上搜索但找不到任何东西。

如果有人遇到此类问题并找到解决方案,请告诉我。

谢谢,

4

3 回答 3

4

我遇到了你的问题,因为我有类似的问题。David Z 的解决方案对我不起作用,但我确实发现 $paginate 中的 group 变量对我有用。

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

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

希望这有帮助

于 2012-11-30T04:39:59.320 回答
1

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

class RecipesController extends AppController {

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

}
于 2012-04-18T21:56:53.207 回答
0

所以这是我的分页变量的样子:

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']
        );

即使这个错误出来我也可能有问题。但我无法弄清楚。

任何建议请告诉我。

于 2012-04-19T20:00:01.577 回答