CakePHP:找到邻居,在"名字"或"订单"上订购

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'参数为您当前项目的订单价值,你会得到prevnext.

ric*_*h97 4

是的,问题是您没有在字段数组中包含订单字段。

$neighbours = $this->Item->find('neighbors', array(
    'order' => 'order DESC',
    'fields' => array('id', 'name', 'order')
));
Run Code Online (Sandbox Code Playgroud)

除非您的相关模型具有冲突的字段名称,否则您不需要包含Item.模型前缀(尽管我通常会这样做以避免此类错误。)如果您已包含[Item.]order在“字段”中,则原始语法将起作用

最后,您的解决方案不是最佳的,您在不需要时进行了两个 SQL 查询。据我所知,“字段”不是一个查询选项,这实际上意味着您要返回表中的所有字段。