2016-06-17 8 views
0

問題

私は、ユーザーがフラグを立てることができる多くのものがあるアプリケーションを構築しています。Laravelのフラグシステムのデータベース関係5.2

  • 別のユーザー
  • 画像
  • コメント
  • タグ

だから私はすべての低迷に対処する一つの低迷のテーブルをしたい:物事ユーザーがフラグすることができ、これらの例を取ることができますこれらのことは私のビジョンとララベルの慣習に固執して関係法を利用することができるので、flagsテーブルのためにこれをしなければならないでしょう...


私の "ソリューション"

+----+---------+----------+--------+------------+-----------------------------+ 
| id | user_id | image_id | tag_id | comment_id | message      | 
+----+---------+----------+--------+------------+-----------------------------+ 
| 1 | 3  | null  | null | null  | I'm building an application | 
+----+---------+----------+--------+------------+-----------------------------+ 
| 2 | null | 45  | null | null  | This image is NSFW!   | 
+----+---------+----------+--------+------------+-----------------------------+ 
| 3 | null | null  | 234 | null  | Tag includes bad content... | 
+----+---------+----------+--------+------------+-----------------------------+ 
| 4 | null | null  | null | 125  | Spamming!!!     | 
+----+---------+----------+--------+------------+-----------------------------+ 

さてこのように、この低迷するシステムは、すべてのスケーラブルではありません!将来的に旗を掲げることができるようにしたいのであれば、私は列を加えて地図にする必要があります。

私はこの厄介な解決策が気に入らず、別のLaravel-y方法これをする!


私は、可能な場合は雄弁例で、Laravel 5.2のように複数のもののために一つのテーブルでフラグを処理するためのスケーラブルな方法を把握するのに役立つ必要があります。ヘルプは高く評価されるだろう。

+1

かもしれません。 'user_id'、' message'、 'flaggable_id'、' flaggable_type'を持つ 'flags'テーブルです。最後の列は、それが属する表を示します。 Eloquentはこれを本当に簡単に動作させます。 – jszobody

+0

'entity_types'というテーブルを作成することは考えていませんでした。ここでは、' user'、 'image'、' tag'、 'comment'などの値を持つ行を**追加して、 'entity.id'とその値を保持する別の列への参照がありますか?このデザインに関するLaravel-yはありません。Laravelはあなたを助けるためにそこにあります。ただそれのために奇妙で難しいことを強制するのではありません。 –

答えて

2

あなたは多型の関係を見てみる必要があります。https://laravel.com/docs/master/eloquent-relationships#many-to-many-polymorphic-relations

あなたはflags用のテーブルを作成し、テーブルがflaggableと呼ばれます。 Flaggableの列はid,flag_id,flaggable_typeflaggable_idです。そして、エントリーは私が[多型の関係](https://laravel.com/docs/5.1/eloquent-relationships#polymorphic-relationsを)検討したい

1 | 1 (id of the flag) | App\Image (type of flaggable) | 45 (ID of image)

+0

これは正確にOPに必要なものです。 – Ohgodwhy