2016-09-06 22 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フィールドを使ってそれを注文しますか?ここで多対多の関係で私のポストやタグのモデルである:

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()のmetohdを降順で使用したいと考えています。助けてください。

答えて

0

私は解決策を見つけると、ここで()メソッドがあるべきTagモデルの記事に順序を降順について

に答えている:

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

のfind()メソッドは次のようにする必要があります:

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 
関連する問題