我觉得我什么都试过了,所以现在来找你。
我正在尝试对我的数据进行排序,但进展不是很顺利,这对Cake来说有点陌生。
这是我的代码:
$this->set('threads', $this->paginate('Thread', array(
'Thread.hidden' => 0,
'Thread.forum_category_id' => $id,
'order' => array(
'Thread.created' => 'desc'
)
)));
它会生成一个SQL错误,这是最后一个有趣的部分:
AND `Thread`.`forum_category_id` = 12 AND order = ('desc') ORDER BY `Thread`.`created` ASC LIMIT 25
我该如何解决这个问题呢?创建的字段显然存在于数据库中。:/
发布于 2012-12-11 04:29:05
试一试
$this->set('threads', $this->paginate('Thread', array(
'Thread.hidden' => 0,
'Thread.forum_category_id' => $id
),
array(
'Thread.created' => 'desc'
)
));
我不是蛋糕大师,只是猜猜看。
编辑。是的,没错。Cake manual摘录:
控制用于排序的字段... $this->paginate('Post', array(), array('title', 'slug'));
所以order是第三个参数。
发布于 2018-05-24 12:53:58
试一试
$all_threads = $this->Threads->find('all',
array(
'order' => 'Threads.created'
)
);
$saida = $this->paginate($all_threads,[
'conditions' => ['Threads.hidden' => 0]
]);
发布于 2018-07-12 08:36:01
在paginate with order中有几点需要注意。对于Cake 3.x,您需要:
1)确保已将字段包含在'sortWhitelist‘中
$this->paginate = [
'sortWhitelist' => [
'hidden', 'forum_category_id',
],
];
2)对于'order',如果你把它放在$this->paginate下,你将无法在视图中对该字段进行排序。所以最好把'order‘放在查询中(遗憾的是文档中没有说明)
$query = $this->Thread->find()
->where( ['Thread.hidden' => 0, 'Thread.forum_category_id' => $id, ] )
->order( ['Thread.created' => 'desc'] );
$this->set('threads', $this->paginate($query)
https://stackoverflow.com/questions/13808573
复制相似问题