Laravel
Laravelで一覧に「ハッシュタグ」を表示する方法
いつもご利用ありがとうございます。このブログは、広告費によって運営されています。
オススメ本
Laravel で一覧に「ハッシュタグ」を表示する方法についてまとめました
Laravel Framework 8.83.8
Vue 2.6
前提
- posts テーブル
- post_tag テーブル
- tags テーブル
がある前提で表示に特化した内容になります。
多対多で保存する機能は以下の記事を参照してください。
Laravel で多対多のリレーションをして保存、表示する方法【belongsToMany】
Laravel でリレーションを書く
Post モデルにリレーションを確認する。
(すでに保存ができている人の場合、新規の記述は不要となるはずです)
Models/Post.php
public function tags()
{
return $this->belongsToMany('App\Tag');
}
コントローラーで、タグをセットで一覧を取得する
public function index()
{
$posts = Post::with('tags')->get();
//dd($posts);
return view('post/index',compact('posts'));
}
この記述により、tags のリレーションがが加わった状態でデータが取得されます。
blade × Laravel で一覧を表示する方法
以下のようにタグを表示できます。
注意点は、tags が複数なのでさらに foreach で回すことになります。
@foreach($posts as $post)
{{ $post->title }}
@foreach($post->tags as $tag)
{{ $tag->name }}
@endforeach
@endforeach
Vue ×Laravel で一覧を表示する方法
リレーションやコントローラーは同様で、カラムが追加されているだけですので、シンプルに以下のように取得が可能です。
<template>
<div v-for="post in posts">
<p v-for="tag in post.tags">{{tag.name}}</p>
</div>
</template>
まとめ
以上です。
誰かの参考になればと思います。
感想・苦情は TwitterDM にご連絡ください。
それでは!
人気記事