Php Laravel 5.2中标记系统的数据库关系 问题

Php Laravel 5.2中标记系统的数据库关系 问题,php,database,laravel,laravel-5,laravel-5.2,Php,Database,Laravel,Laravel 5,Laravel 5.2,我正在构建一个应用程序,其中有许多用户可以标记的东西。让我们以用户可以标记的内容为例: 另一个用户 形象 评论 标签 所以我想要一个标记表来处理标记所有这些事情,但是根据我的愿景,为了坚持Laravel的约定,以便我可以使用关系方法,我必须对标记表做类似的事情 我的“解决方案” 现在这样,这个标记系统根本不可伸缩!如果我想在将来标记事物,我必须添加一列并映射它,等等 我不喜欢这种凌乱的解决方案,我想不出另一种解决方法 我需要找到一种可伸缩的方法,用一个表以Laravel 5.2的方式处理

我正在构建一个应用程序,其中有许多用户可以标记的东西。让我们以用户可以标记的内容为例:

  • 另一个用户
  • 形象
  • 评论
  • 标签
所以我想要一个标记表来处理标记所有这些事情,但是根据我的愿景,为了坚持Laravel的约定,以便我可以使用关系方法,我必须对
标记
表做类似的事情


我的“解决方案” 现在这样,这个标记系统根本不可伸缩!如果我想在将来标记事物,我必须添加一列并映射它,等等

我不喜欢这种凌乱的解决方案,我想不出另一种解决方法



我需要找到一种可伸缩的方法,用一个表以Laravel 5.2的方式处理多个事物的标志。

您应该看看多态关系:

您可以为
标志创建一个表
,并创建一个名为
标志
的表。可标记的列有
id
flag\u id
Flaggable\u type
Flaggable\u id
。那么一个条目可能是


1 | 1(标志id)| App\Image(可标记类型)| 45(图像id)

您应该看看多态关系:

您可以为
标志创建一个表
,并创建一个名为
标志
的表。可标记的列有
id
flag\u id
Flaggable\u type
Flaggable\u id
。那么一个条目可能是


代码> 1×1(标志的ID).App\Image(可折叠类型)45(图像ID)< /代码>

我会考虑。
用户标识
消息
可标记标识
可标记标识类型
标记
表格。最后一列将指示它所属的表。Eloquent使这项工作变得非常容易。您没有想到创建一个名为
实体类型
的表,在该表中,您可以添加带有值的行,例如
用户
图像
标记
注释
,然后不使用X列,您是否引用了
entity.id
和另一个保存该值的列?关于这个设计没有什么拉拉维里,Laravel是为了帮助你,而不是为了它而执行一些奇怪而困难的事情。我会考虑一个。
用户标识
消息
可标记标识
可标记标识类型
标记
表格。最后一列将指示它所属的表。Eloquent使这项工作变得非常容易。您没有想到创建一个名为
实体类型
的表,在该表中,您可以添加带有值的行,例如
用户
图像
标记
注释
,然后不使用X列,您是否引用了
entity.id
和另一个保存该值的列?这个设计没有什么拉威尔-y,拉威尔是来帮助你的,而不是为了它而强制执行一些奇怪和困难的事情。这正是OP需要的。这正是OP需要的。
+----+---------+----------+--------+------------+-----------------------------+
| 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!!!                 |
+----+---------+----------+--------+------------+-----------------------------+