2011-07-27 46 views
0

我有一個CakePHP的「架構」問題:用CakePHP高效分頁

我必須分頁查詢,這似乎很容易,我使用$ paginate數組和paginate方法,但我有很多限制。

在我的控制器的許多方法中,我必須返回同一模型的不同字段,並且在這兩種情況下我都必須分頁。這個事實迫使我提及$ paginate數組中的所有字段,當我不需要這些字段時,這可能會導致性能下降。

如何以不乾淨的方式爲不同的方法設置不同的分頁規則?

(我想在使用不同的陣列和分配給$分頁運行系統中的特定陣列,但我想知道,如果有一個「公報的方式」來做到這一點)

感謝提前:)。

回答

1

,如果你的表沒有字段的數量龐大,我認爲這是好的,讓蛋糕查詢所有的人。表現不應該有太大的不同。

您可以指定不同的分頁集:

var $paginate = array(
    'Recipe' => array (...), 
    'Author' => array (...) 
); 

然後$data = $this->paginate('Recipe');

http://book.cakephp.org/view/1232/Controller-Setup

0

我不知道這是不是你已經做什麼,但我認爲這已經足夠乾淨了:

function foo() { 
    $this->paginate['fields'] = array('field_1', 'field_2'); 
    /* rest of the method */ 
} 
function bar() { 
    $this->paginate['fields'] = array('field_3', 'field_4'); 
    /* rest of the method */ 
} 

如果有域,你會在所有的方法來使用,你也可以做這樣的:

var $paginate = array (
    'fields' => array('always_need_this', 'also_need_this_always',) 
); 
function foo() { 
    array_push($this->paginate['fields'], 'only_in_foo', 'also_only_in_foo'); 
    /* rest of the method */ 
} 
function bar() { 
    array_push($this->paginate['fields'], 'only_in_bar', 'also_only_in_bar'); 
    /* rest of the method */ 
}