Laravel

Laravelで一覧に「ハッシュタグ」を表示する方法

いつもご利用ありがとうございます。このブログは、広告費によって運営されています。

⇨ Laravel 記事の目次はこちら

Laravel で一覧に「ハッシュタグ」を表示する方法についてまとめました

Laravel Framework 8.83.8
Vue 2.6

前提

  1. posts テーブル
  2. post_tag テーブル
  3. 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 にご連絡ください。

それでは!

人気記事

PHP7.4 + Laravel6 のプロジェクトを AWS EC2 にデプロイする

【laravel-breadcrumbs】Laravel でパンくずリストを実装する