実現したいこと
複数の親テーブルをもつテーブルの設計をしています。
3種類のproductsテーブルがあるとし、それらを紹介するコンテンツテーブルを作成したときに、どれに紐づくコンテンツかを判断したいと思っています。
現状の設計
現状は以下のように実装しようと思っていますが、productsが増えた場合にカラムを追加しなければいけなくなるため、良くないと思います。
それぞれのproductsにtitle, contentsカラムを追加しようかとも考えましたが、それもカラムが増えた場合に対応しなければいけません。
php
1Schema::create('products1', function (Blueprint $table) { 2 $table->id(); 3 $table->string('name'); 4 $table->integer('price'); 5 $table->string('foo'); 6 $table->timestamps(); 7}); 8Schema::create('products2', function (Blueprint $table) { 9 $table->id(); 10 $table->string('name'); 11 $table->integer('price'); 12 $table->string('bar'); 13 $table->timestamps(); 14}); 15 16Schema::create('contents', function (Blueprint $table) { 17 $table->id(); 18 $table->string('title'); 19 $table->text('contents'); 20 $table->unsignedBigInteger('products1_id'); 21 $table->unsignedBigInteger('products2_id'); 22 $table->timestamps(); 23});
案
products1_contents、products2_contentsのような中間テーブルを作成するのが最もよいかと考えますが、
この方法で良いとした場合、contentsにレコードを追加したときにproducts1_contentsに追加するリレーションがうまく書けませんでした。
なにか方法はありますでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/27 03:52