##はじめに
私、中間テーブルについて学習しておりますプログラミング初学者です。
理解不足な点が多々あると思いますので、間違った記述等をしている際は、ご指摘のほどよろしくお願いいたします。
##わからないこと
現在、投稿をカテゴリ別に保存する機能の実装を試みています。
表示するカテゴリをユーザーごとに分けたい(ハッシュタグと同様の機能ではなく、各ユーザーがコレクションのような形として投稿を好みのカテゴリ別に分けてユーザーごとに管理する機能を実装したい)と考えているのですが、ユーザーの情報(user_id[外部キー制約])を持たせるテーブルとしてarticlesテーブルとcategoriesテーブルの中間テーブルを選択することが正しいかどうかわからない為、この場をお借りして質問させていただきます。
現在、articlesテーブルとcategoriesテーブルの間に多対多の関係性を持たせるために、下記のようなマイグレーションファイルを作成後、
モデルファイル等に必要なコードを一通り記述して、きちんと投稿をカテゴリ別に保存できる状態となっておりますが、カテゴリにユーザーの情報がない為、カテゴリ名を一覧で表示しようとすると、categoriesテーブルに存在する全てのカテゴリ名が全ユーザーに共通として表示される状態となっております。この状態を、各ユーザーが自分でカスタマイズしたカテゴリのみ表示するように変更したいと考えております。
このような場合、articlesテーブルとcategoriesテーブルの中間テーブルにユーザーの情報を持たせるべきなのでしょうか?
初歩的な質問になってしまい申し訳ございませんが、よろしくお願いいたします。
補足
ハッシュタグと同様の機能ではなく、各ユーザーがコレクションのような形として投稿を好みのカテゴリ別に分けてユーザーごとに管理する機能とは、Instagramのコレクション機能と同様です。
###中間テーブルのマイグレーションファイル
php
1class CreateArticleCategoryTable extends Migration 2{ 3 public function up() 4 { 5 Schema::create('article_category', function (Blueprint $table) { 6 $table->bigIncrements('id'); 7 $table->unsignedBigInteger('article_id'); 8 $table->foreign('article_id')->references('id')->on('articles')->onDelete('cascade'); 9 $table->unsignedBigInteger('category_id'); 10 $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade'); 11 $table->timestamps(); 12 }); 13 }
###articlesテーブル
|id|user_id|body|created_at|updated_at|
|:--|:--:|--:|
|1|1|text|xxxx-xx-xx|xxxx-xx-xx|
###categoriesテーブル
|id|name|created_at|updated_at|
|:--|:--:|--:|
|1|カテゴリー|xxxx-xx-xx|xxxx-xx-xx|
###article_categoryテーブル(中間テーブル)
|id|article_id|category_id|created_at|updated_at|
|:--|:--:|--:|
|1|2|3|xxxx-xx-xx|xxxx-xx-xx|
###開発環境
laravel 6.20.16
php 7.4.15
回答1件
あなたの回答
tips
プレビュー