それぞれのユーザーが関心を持っている「カテゴリ」および/または「ブランド」のIDを保持する「興味」と呼ばれる機能があります。 2つの別個のテーブルuser_category_interests
およびuser_brand_interest
については、type
と呼ばれる列挙型列を追加しました。2つのテーブルを参照するときのLaravel DBスキーマ
これで、Eloquentメソッドを利用するために、スキーマビルダ、リレーションシップと外部キーの設定方法をどのように作成すればよいかわかりません。
Schema::create('user_interests', function (Blueprint $table) {
$table->increments('id');
$table->enum('type', ['categories', 'brands']);
$table->integer('reference_id')->unsigned();
$table->timestamps();
});
2つのテーブルとモデルを別々に作成するよりも良い方法はありますか?
P.S.私はlaravelを使用します。5.4
Brands Table:
id | name
-----------
1 | Adidas
2 | Nike
3 | Puma
Categories Table:
id | name
-----------
1 | Clothes
2 | Luxury
3 | Sport Wear
User_Interests Table:
id | user_id | type | reference_id
-----------------------------------------
1 | 113 | 'brand' | 2
1 | 113 | 'brand' | 3
2 | 113 |'category'| 3
3 | 224 | 'brand' | 1
[Laravel、別のモデルの投票に複数のデータベーステーブルが必要です](http://stackoverflow.com/questions/29222441/laravel-do-i-need-multiple-database-tables-for-投票で異なるモデル) – patricus