2012-09-22 44 views
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))); 

的问题是,它从所有的岗位,不仅同一项目的那些拿到一个和下一个职位。

所以,如果你能帮助我一点:)

回答

2

我假设邮政属于关联项目和项目的hasMany帖子。

您将只需要添加一个额外的条件:

$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关键。

+0

是的,我正在尝试这样的事情,问题是我不知道如何从控制器内的原始帖子的$ projectId。 – Axiol

+0

查看我编辑的答案 – tigrang

+0

看起来不错。谢谢 :) – Axiol

相关问题