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部分は省略できるのですね。
ドキュメントはちゃんと読むべきだなぁ。。