很多小时我不能做到以下几点:
我有桌子:
类别: id,名称
帖子: id,category_id,标题,文字,隐藏('1'或'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');
}
}
好的,我有两个类别,可以显示特定类别的所有帖子,如
$posts = Category::find(1)->posts()->orderBy('created_at', 'desc')->where('hidden', '=', 0)->paginate(5);
现在我想创建一个单一帖子的查询,但我不知道如何。
我想要:
1.当我输入/ news / 1它显示我1个类别的第1个帖子,但如果我输入/ news / 2它没有显示帖子,因为其他类别中的第2个帖子
无论如何,邮政有很多评论,基本上我知道怎么做
3.如果隐藏帖子,则不应通过网址显示
答案 0 :(得分: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));
}
答案 1 :(得分: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)