CakePHP:查找邻居给出了错误的数组


CakePHP: find neighbors is giving wrong array

我的代码是:

$this->Product->id = $product_range_detail['Product']['id'];
    $product_neighbors_details = $this->Product->find('neighbors',array(
        'conditions'=>array('Product.is_active'=>1,'Product.is_deleted'=>0,'Product.parent_id'=>0),
        'order'=>'Product.display_order ASC',
        'fields'=>array('id','name','slug','display_order'),
        'value'=>$product_range_detail['Product']['id']
    ));

数组如下:

Array (
    [prev] =>
    [next] => Array (
        [Product] => Array (
            [id] => 130
            [name] => Polyurethane Foam
            [slug] => polyurethane-foam
            [display_order] => 1
        )
    )
)

但我需要下一个和上一个一样,上一个和下一个一样。我试着更改订单,但不起作用。

SQL查询也是这样的:

SELECT `Product`.`id`, `Product`.`name`, `Product`.`slug`,
`Product`.`display_order` FROM `mil_db`.`products` AS `Product`
WHERE `Product`.`is_active` = 1 AND `Product`.`is_deleted` = '0'
AND `Product`.`parent_id` = 0 AND `Product`.`id` < 124
ORDER BY `Product`.`id` DESC LIMIT 1


SELECT `Product`.`id`, `Product`.`name`, `Product`.`slug`,
`Product`.`display_order` FROM `mil_db`.`products` AS `Product`
WHERE `Product`.`is_active` = 1 AND `Product`.`is_deleted` = '0'
AND `Product`.`parent_id` = 0 AND `Product`.`id` > 124
ORDER BY `Product`.`id` ASC LIMIT 1

5小时后,我终于得到了解决方案:

$this->Product->id = $product_range_detail['Product']['id'];
    $product_neighbors_details = array();
    $product_neighbors_details = $this->Product->find('neighbors',array(
        'conditions'=>array('Product.is_active'=>1,'Product.is_deleted'=>0,'Product.parent_id'=>$product_range_detail['Product']['parent_id']),
        'order'=>array('Product.display_order'),
        'fields'=>array('id','name','slug', 'display_order'),
        'field' => 'display_order', 'value' => $product_range_detail['Product']['display_order']
    ));

实际上,如果我不设置字段值,那么默认情况下,cakephp会将主键作为字段。