0

だから、私が持っているのは投稿を表示するページです。投稿はプロジェクトにまとめられます。そして、このページでは、投稿に加えて、同じプロジェクトの前後の投稿を表示します。だから、私は私のコントローラにこれを持っています:

$this->set("post", $this->Post->find("first", array("conditions" => array("Post.id" => $id), "contain" => array("User", "Project", "Project.Post" => array("id", "image", "title"), "Comment", "Comment.User" => array("id", "username", "mail"), "Comment.User.Post" => array("id", "image", "title")))));
$this->set("neighbors", $this->Post->find("neighbors", array("field" => "id", "value" => $id)));

問題は、同じプロジェクトの投稿だけでなく、すべての投稿から前の投稿と次の投稿を取得することです。

だから、もしあなたが私を少し助けることができれば:)

4

1 に答える 1

2

私は、ポストがプロジェクトに属し、プロジェクトが多くのポストを持っていると仮定しています。

追加の条件を追加するだけです:

$post = $this->Post->find("first", ...); // this is your first find call, assign it to a var instead

$neighbors = $this->Post->find('neighbors', array(
    'field' => 'id', 
    'value' => $id,
    'conditions' => array(
        'Post.project_id' => $post['Post']['project_id'],
    ),
));
$this->set(compact('post', 'neighbors'));

試したことはありませんが、ソースを見ると、findNeighbors はconditionsキーを尊重しています。

于 2012-09-22T17:46:14.717 に答える