Cakephp 2找到邻居环绕

时间:2018-09-22 08:54:23

标签: cakephp-2.0

我正在使用cakephp 2,因此幸运的是find('neighbors')仍然存在。 但是,我希望它可以环绕。

因此,如果我按ID排序并选择第一个ID,则我希望下一个ID记录(下一个)有效(但有效),但作为前一个最高ID记录(如果有第一个ID,则返回null)。反之亦然,如果您选择最高的ID,那么我想选择最低的ID。

有没有一种方法可以轻松实现?

1 个答案:

答案 0 :(得分:0)

如果find('neighbors')不返回下一个或上一个数组,您可以轻松地自己获取下一个或上一个条目。这是一个示例实现:

public function view($id) {
    // Find neighboring products by 'id'
    $neighbors = $this->Product->find('neighbors', array(
        'field' => 'id',
        'value' => $id
    ));

    // If the "prev" neighbor returns null, then assign it to the
    // last item in the model as sorted by id.
    if ($neighbors['prev'] === null)
    {
        $neighbors['prev'] = $this->Product->find('first', array(
            'order' => array('Product.id' => 'desc')
        ));
    // If the "next" neighbor returns null, then assign it to the
    // first item in the model as sorted by id.
    } elseif ($neighbors['next'] === null) {
        $neighbors['next'] = $this->Product->find('first', array(
            'order' => array('Product.id' => 'asc')
        ));
    }

    // Set the data to 'neighbors' for use in the view. 
    $this->set('neighbors', $neighbors);
}