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 查询。据我所知,“字段”不是一个查询选项,这实际上意味着您要返回表中的所有字段。
| 归档时间: |
|
| 查看次数: |
8439 次 |
| 最近记录: |