1

很多小时我不能做以下事情:我有表格:
类别: id,名称
帖子: id,category_id,title,text,hidden('1'or'0'),crated_at,update_at 等......
评论: id、post_id、user_id、text、created_at
用户: id、姓名等...

我的模型:

class Category extends Eloquent {

    public function posts() {
        return $this->hasMany('Post');
    }
}

class Comment extends Eloquent {

    public function post()
    {
        return $this->belongsTo('Post');
    }

    public function user() {
        return $this->belongsTo('user');
    }

}

class Post extends Eloquent {

    public function category() {

        return $this->belongsTo('category');
    }

    public function comments() {
        return $this->hasMany('Comment');
    }
}

class User extends Eloquent {
    public function comments() {
        return $this->hasMany('comment');
    }

}

好的,我有 2 个类别,可以显示特定类别的所有帖子,例如

$posts = Category::find(1)->posts()->orderBy('created_at', 'desc')->where('hidden', '=', 0)->paginate(5);

现在我想创建单个帖子的查询,但我不知道如何。
我想要:
1. 当我输入 /news/1 时,它会显示来自 1 个类别的第 1 个帖子,但如果我输入 /news/2 它不会显示任何帖子,因为其他类别的第2 个
帖子 2. 帖子有很多评论,基本上我知道如何无论如何,它要做。
3.如果帖子被隐藏,则不应通过url显示

4

2 回答 2

2
    public function show($id) {
    // This code works, but I could not make a pagination for comments
    //$posts = Category::find(1)->posts()->orderBy('created_at', 'desc')->where('hidden', '=', 0)->where('id', '=', $id)->with('comments', 'comments.user')->get();
    //Following code works as i want
    $posts = Category::find(1)->posts()->orderBy('created_at', 'desc')->where('hidden', '=', 0)->where('id', '=', $id)->get();
    $comments = Comment::where('post_id', '=', $id)->paginate(10);
    //This line adds +1 to views, but on every click. Need to work on that
    //if (count($posts) > 0) Post::where('id', '=', $id)->increment('views');
    return View::Make('news.view')->with(array('posts' => $posts, 'comments' => $comments));
}
于 2013-06-25T17:49:02.563 回答
0

只需创建一个函数并将帖子编号传递为$id,或其他任何内容。

我只是在这里命名函数news并传递$id,但你的会有所不同,因为我不知道你的控制器/页面结构......但它沿着这些线。

 public function news($id){

$posts = Category::find(1)->posts()->orderBy('created_at', 'desc')->where('hidden', '=', 0)->where('id','=',$id)->get();
 print_r($posts);
}

现在它将找到该类别中的特定帖子 1......如果该帖子不存在于该类别中,它不应该返回任何内容。

所以如果你去news/1它会显示,如果你去news/2什么都不会显示,因为类别仍然停留在(1)

于 2013-06-24T23:04:23.450 回答