2016-09-06 13 views
0

내 Laravel 프로젝트에 내림차순으로 정렬하여 태그로 선택된 게시물을 스택합니다. 특정 태그별로 게시물을 표시하고 싶습니다. manyToMany 관계가있는 PostTag 모델을 만듭니다. 피벗 테이블 post_tagpost_idtag_id으로 만듭니다. 보기에서Laravel 5.2 - 태그별로 게시물 선택 및 내림차순

public function tags($tagid) 
    { 
     $tag = $this->tags->find($tagid); 

     return view('frontend.posts.tag', compact('tag')); 
    } 

및 루프 그것 :가 PostsController에서 나는 tags() 방법을 만들 이것은 나를 위해 작동

@foreach($tag->posts as $post) 
    {{ $post->title }} 
    .... 
@endforeach 

을,하지만 난 내림차순으로 posts.created_at 게시글을 주문해야합니다. Tag :: find ($ id)를 사용하여 쿼리를 만드는 방법은 있지만 게시 테이블의 posts.created_at 필드를 사용하여 주문 하시겠습니까? 여기 내 포스트와 태그 모델은 manyToMany 관계에 있습니다 :

class Post extends Model 
{ 
    ..... 

    public function tags() 
    { 
     return $this->belongsToMany(Tag::class); 
    } 
..... 

class Tag extends Model 
{ 
    protected $fillable = ['name']; 

    public function posts() 
    { 
     return $this->belongsToMany(Post::class); 
    } 
} 

하십시오, 어떻게 posts 테이블에 created_at 열을 기준으로 내림차순으로 특정 태그에 의해 선택된 게시물을 주문하는 방법? 그 쿼리에서 내림차순으로 paginate()를 사용하고 싶습니다. 도와주세요.

답변

0

나는 해결책을 찾을 여기() 메소드가 있어야한다 태그 모델 게시물에 순서를 내림차순

대답입니다 :

public function posts() 
    { 
     return $this->belongsToMany(Post::class)->orderBy('created_at', 'desc'); 
    } 
TagController에서

발견() 메소드는 다음과 같이해야합니다 :

public function tags($tagid) 
    { 
     $tag = $this->tags->find($tagid)->posts()->paginate(12); 

     return view('frontend.posts.tag', compact('tag')); 
    } 

및 블레이드 :

@foreach($tag as $post) 
    {{ $post->title }} 
@endforeach