Bar*_*ans 5 cakephp neighbours find cakephp-1.2
我有一个按照int字段排序的有序商品列表order
.我在CakePHP 1.2中创建了一个具有上一个和下一个按钮的画廊,这些按钮应根据他们的顺序链接到上一个和下一个项目,而不是根据他们的顺序id
.
为了得到这个结果,我将'order'参数包含在find函数中,并用它填充'Item.order'=>'DESC'
.结果仍然是id
有序列表.
我的问题是:我做错了什么?我的控制器:
$this->Item->id = 16;
$neighbours = $this->Item->find('neighbors', array(
'order' => array('Item.order'=>'DESC'),
'fields' => array('id','name')
));
Run Code Online (Sandbox Code Playgroud)
我的解决方案
我尝试过不同的方法.我的代码现在完成了这项工作,看起来如下:
$order = $this->Item->findById(6);
$neighbours = $this->Item->find('neighbors', array(
'field' => 'order',
'value' => $order['Item']['order']
));
Run Code Online (Sandbox Code Playgroud)
通过参数设置'field'
到外地将是排序字段,并且设置'value'
参数为您当前项目的订单价值,你会得到prev
和next
.
是的,问题是您没有在字段数组中包含订单字段。
$neighbours = $this->Item->find('neighbors', array(
'order' => 'order DESC',
'fields' => array('id', 'name', 'order')
));
Run Code Online (Sandbox Code Playgroud)
除非您的相关模型具有冲突的字段名称,否则您不需要包含Item.
模型前缀(尽管我通常会这样做以避免此类错误。)如果您已包含[Item.]order
在“字段”中,则原始语法将起作用
最后,您的解决方案不是最佳的,您在不需要时进行了两个 SQL 查询。据我所知,“字段”不是一个查询选项,这实际上意味着您要返回表中的所有字段。