在同一 Controller 的几个地方我有如下代码:
$publications = $this->paginate('Publication', $conditions);
...其中$conditions是条件数组,选择哪些字段以及如何选择(在mysql中使用LIKE)。
他们每个人都有不同的“Order by”声明。
我怎样才能实现这一点,并定义sql的不同“order by”部分?
更新(2011-03-11):这是我定义分页的部分方式:
$this->paginate = array(
'limit' => 1,
'fields' => array('`Publication`.*, PublicationNumeration.*, Collection.*, Publisher.*, Publication.title as PublicationTitle'),
'joins' => array( array('table' => 'publication_numerations', 'alias' => 'PublicationNumeration', 'type' => 'LEFT', 'conditions' => array( 'Publication.id = PublicationNumeration.publication_id' ) ) )
, 'order' => array('PublicationTitle desc')
);
$publications = $this->paginate('Publication', $conditions);
$this->set(compact('publications', 'urlArgs'));
带有“limit”的部分有效,但“order”不起作用,并且根本不会在 Debug模式下显示。
最佳答案
每次在每个不同的操作中实现分页功能时,您都可以覆盖分页功能。例如:
function list_recipes() {
$this->paginate = array(
'limit' => 10,
'order' => array(
'Recipe.title' => 'asc'
)
);
$data = $this->paginate('Recipe');
$this->set(compact('data'));
}
就您的情况而言,您可能希望重用 $conditions
数组,但为每个不同的实现更改 'order'
的值。
进一步引用:Pagination doc
关于cakephp - 如何更改分页条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5216692/