[英]Database relationships for a flagging system in Laravel 5.2
我正在构建一个应用程序,用户可以在其中标记许多内容。 让我们以用户可以举报的这些示例为例:
所以我想要一个标记表来处理所有这些标记,但是出于我的远见并坚持Laravel的约定,以便我可以利用关系方法,我必须对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的方式用一个表处理多个事物的标志。
您应该看一下多态关系: https : //laravel.com/docs/master/eloquent-relationships#many-to-many-polymorphic-relations
您创建一个flags
表和一个名为flaggable
的表。 Flaggable具有id
, flag_id
, flaggable_type
和flaggable_id
。 那么一个条目可能是
1 | 1 (id of the flag) | App\\Image (type of flaggable) | 45 (ID of image)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.