find neighborsでのconditions

Cakephpで隣接するデータを取得

Cakephpでは、find allのほかにも複数のオプションがあり、その中でおすすめなのが、neighborsとthreadedオプション。

neighborsでは、valueに指定した値の行の前後の行を

prev
next

というデータ構造で返してくれます。find all同様conditionsを定義できます。

$neighbors = $this->Product->find('neighbors', array(
	'field' => 'id',
	'value' => $id,
	'conditions'=>array( 
		'and' => array(
        		'Product.email' => $email,
                           	'or' => array(
					array('Product.status' => 1),
					array('Product.status' => 3),
				)
			)
        	)
	)
);

上の例はProductモデルのidフィールドをvalueで対象となる行を割り出し、その前後の行を返します。メールアドレスやProductのstatusの値によって対象となる行を絞り込むためのconditionsが設定可能です。

neighborsの使いどころとして、ブログサービスを例にすると

前の記事
次の記事

といったリンクを構築する際に利用できます。

cakephp findのconditions色々

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

find neighborsでのconditionsの記事にコメントを投稿