2012-04-18 85 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)); 

希望這有助於