在我的 Laravel 应用程序中,我有 User、List 和 ListItem 模型,User 和 List 之间是一对多关系,User 和 ListItem 之间以及 List 和 ListItem 之间是多对多关系。每个用户应该能够分别标记每个列表上的ListItems,以便ListItem 1可以在列表A和列表B上有不同的标签。我的lists_listitems数据透视表有一列“标签”,但我不知道如何定义标签关系模型。
我考虑通过创建一个与 ListItems 具有多对多关系的 Tag 模型来简化问题,但由于所有用户都可以访问数据库中的所有 ListItems,因此 ListItem 的标签将对所有用户可见。如果我尝试使标签仅对一个用户可见,我会遇到同样的问题(仅适用于 listitems_user 数据透视表,而不是 list_listitmes 数据透视表)。 我搜索了文档和网络,但没有得到任何有用的结果,这可能是因为标签是多对多关系的一个非常常见的示例,而没有我的应用程序所需的额外复杂性。是否可以在 Laravel 中标记关系?
我会制作一个额外的标签模型,因此实体将是标签、用户、列表、ListItem,其中一个数据透视表为 list_item_user_tags。
我会保留 users 表不变,然后 tags table - id、name、user_id(因此标签是特定于用户的); 列出表 - id,名称; list_items 表 - id、名称; list_item_user_tags 表 - id、list_id、list_item_id、tag_id、user_id。