cakephp-如何更改分页条件?

cakephp-如何更改分页条件?,cakephp,controller,sql-order-by,cakephp-1.3,Cakephp,Controller,Sql Order By,Cakephp 1.3,在同一控制器的几个地方,我有如下代码: $publications = $this->paginate('Publication', $conditions); …其中$conditions是条件数组,选择哪些字段以及选择方式(在mysql中使用类似的方式) 它们中的每一个都有不同的“orderby”语句 如何实现这一点,并在sql中定义不同的“order by”部分 更新(2011-03-11):这是我如何定义分页的一部分: $this->paginate = array(

在同一控制器的几个地方,我有如下代码:

$publications = $this->paginate('Publication', $conditions);
…其中$conditions是条件数组,选择哪些字段以及选择方式(在mysql中使用类似的方式)

它们中的每一个都有不同的“orderby”语句

如何实现这一点,并在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'));

“限制”部分有效,但“顺序”不起作用,并且在调试模式下根本不显示。

每次在不同操作中实现分页功能时,您都可以覆盖分页功能。例如:

function list_recipes() {
    $this->paginate = array(
        'limit' => 10,
        'order' => array(
            'Recipe.title' => 'asc'
        )
    );
    $data = $this->paginate('Recipe');
    $this->set(compact('data'));
}
在您的情况下,您可能希望重用
$conditions
数组,但要为每个不同的实现更改
'order'
的值


进一步参考:

我用这个想法创建了每页的自定义项目选择。
我的默认分页:

var $paginate = array( 'order' => array('User.id' => 'asc') );
我将此添加到我的控制器中,以将限制更改为25(也为5和10添加了1,只是为了看看它将如何运行,并相应地更改了限制值):

然后,在我的主视图(index.ctp)中,我在数据列表的底部添加了以下内容:

<span style="float:right;">
<?php echo "&nbsp;&nbsp;<span style='vertical-align:top;font-size:12px;'>Show:</span>";
      echo $html->link(' 5', array('controller'=>'users', 'action' => 'list5'));
      echo $html->link(' 10', array('controller'=>'users', 'action' => 'list10'));
      echo $html->link(' 25', array('controller'=>'users', 'action' => 'list25'));
    ?>
</span>
<span style="float:right;margin-right:10px;"><?php  echo $paginator->numbers(); ?></span>   

试试这个:
echo$this->Paginator->link('5',数组('limit'=>'5')) echo$this->Paginator->link('10',数组('limit'=>'10');
echo$this->Paginator->link('10',数组('limit'=>'25')

请发布您的
$conditions
数组。以前尝试过,但它会创建大量“未定义索引”错误消息。好的,所以“未定义索引”错误是我的错误,我必须在分页参数中添加“字段”部分。但是,“订单”部分不起作用。“limit”的部分在那个里,它可以工作,但我在页面调试块的sql查询中找不到“order”。。。我做错了什么?在下一篇文章中提到“models$order属性只影响find调用”。。。。。。。如何解决我的问题?我设法解决了这个问题,将条件数组与一些伪数组合并,比如:$conditions=array\u merge($conditions,array(1=>'1 order by Publication.title DESC');那么,这个解决方案安全吗?$order属性在模型中,在分页函数中不必担心。您可以发布整个$conditions数组吗?您必须为每个页面创建一个视图,这一事实使此功能无法实现。实际上,这应该是一个指标,告诉你这个想法有缺陷,或者你的实施不完整。
<span style="float:right;">
<?php echo "&nbsp;&nbsp;<span style='vertical-align:top;font-size:12px;'>Show:</span>";
      echo $html->link(' 5', array('controller'=>'users', 'action' => 'list5'));
      echo $html->link(' 10', array('controller'=>'users', 'action' => 'list10'));
      echo $html->link(' 25', array('controller'=>'users', 'action' => 'list25'));
    ?>
</span>
<span style="float:right;margin-right:10px;"><?php  echo $paginator->numbers(); ?></span>