2013-06-24 4 views
1

많은 시간 나는 다음을 수행 할 수 없습니다
카테고리 : ID, 이름
게시물 : 아이디, CATEGORY_ID 내가 테이블이 , 제목, 텍스트, ('1'or'0'), crated_at, update_at 숨겨진 등등 ....
의견 : 아이디, post_id를 266 텍스트,
사용자 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. 나는/뉴스/1은 1 개 카테고리에서 나에게 번째 게시물을 보여 주지만, 입력 할 때 내가 입력하면/그것은 다른 카테고리에서 2 회 포스트
2. 포스트는 많은을 가지고 있기 때문에 어떤 게시물을 표시하지입니다/2 뉴스 의견 및 기본적으로 어떻게 해야할지, 어쨌든.
3. 게시물이 URL로 보여되지 않도록해야 숨겨져있는 경우

답변

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)); 
} 
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에서 특정 게시물을 찾을 수 있습니다. 카테고리는 여전히 (1)

+0

네 명의 있기 때문에, 당신은 news/1에 가면

그래서이 표시됩니다, 당신은 news/2에 가면 아무것도 표시되지 않습니다, 나는 필요가 거의 무엇을하지만 ->과 ('comments') 그리고 지금 나는 2 차원 배열의 게시물과 그의 모든 commets,하지만 "foreach"할 코멘트 배열에 액세스 할 수 없습니다 시도했습니다 foreach ($ posts-> $ comment- $ comment 주석) { 에코 $ 코멘트 -> 텍스트 } 하지만 결과가 없습니다 - "아닌 개체의 속성을 얻으려고" – TeroBlaZe

+0

내가 믿는 그 이유는 $ 주석이 객체가 아니기 때문입니다. echo $ comment [ 'text']; – KyleK

+0

경우에만 foreach ($posts[0]['comments'] as $comment) { echo $comment['text']; } 다른 방법이 있는지 여부? – TeroBlaZe