find('prevnext')とか作ってたけど、find('neighbors')があった
またCakePHP。
リストのひとつを選んだときに、その前後の要素をページングとして表示したかったので、
$total = parent::find('count', $options);
$prev = ($id === 1) ? null
: parent::find('first', array_merge(
array(
'conditions' => array('id' => $id - 1),
),
$options
;
$next = ($total === $id) ? null
: parent::find('first', array_merge(
array(
'conditions' => array('id' => $id + 1),
),
$options
))
;
return array($prev, $next);
みたいな感じのを必死に作りましたが、
よくよくドキュメント見てたらfind('neighbors')がありました。
function some_function() {
$neighbors = $this->Article->find('neighbors', array('fields' => 'id', 'value' => 3));
}
# この例、typoで本当は「field」みたい。それか'fields'=>array('id')かな?
この場合、$this->Article->id = 3って入力してあればvalue部分は省略できるのですね。
ドキュメントはちゃんと読むべきだなぁ。。