2012-04-18 53 views
0

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

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

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

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

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

感谢,

回答

1

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

class RecipesController extends AppController { 

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

} 
0

因此,这里是我的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'] 
     ); 

即使这样的错误了 我可能是有点问题。但我无法弄清楚。

任何建议,请让我知道。

3

我遇到了你的问题,因为我有类似的问题。 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)); 

希望这有助于