Cakephp 2 найти соседей обернуть - PullRequest
0 голосов
/ 22 сентября 2018

Я использую cakephp 2, так что, к счастью, находка («соседей») все еще существует.Однако я хотел бы, чтобы это было связано.

Так что, если я упорядочиваю по идентификатору и выбираю первый идентификатор, я хотел бы иметь в качестве следующей следующей записи идентификатора (работает), но в качестве предыдущей записи с наибольшим идентификатором (возвращает ноль, если у вас есть первый идентификатор),И наоборот, если вы выберете самый высокий идентификатор, я бы хотел, чтобы следующим был самый низкий идентификатор.

Есть ли способ легко добиться этого?

1 Ответ

0 голосов
/ 28 сентября 2018

Вы можете легко получить следующую или предыдущую запись самостоятельно, если 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);
}
...