如何为每个模型存储/关联用户特定的数据(状态?)

Posted

技术标签:

【中文标题】如何为每个模型存储/关联用户特定的数据(状态?)【英文标题】:How to store/relate user-specific data (states?) for each model 【发布时间】:2013-01-30 18:58:01 【问题描述】:

例如,如果我有一个充满folders 的表,其中包含namecreated 等站点范围的值,我希望每个用户都可以存储他们自己的关于这些@ 的元数据987654325@(例如expanded = 1label_color = 'red'),我应该如何组织我的数据库?

这是这个例子的示意图,正如我目前正在做的那样:

请注意,这是与数据透视表类似的设置,或者是多次通过,只是我想存储/访问数据透视表中的数据。 这是可取的还是有更好的方法来完成这种行为?

我认为这可能不是最优雅的原因是它使我的 ORM 中的连接复杂化,因为我在加载文件夹行时加入了元数据,所以当我将该文件夹加载为与另一个模型。 如何避免这种情况?

【问题讨论】:

你的做法看起来很完美! 您可以将其存储为序列化字符串。它更灵活,因为您的文件夹可以有很多参数。创建特殊方法 get_param($field, $default = NULL)set_param($field, $value) 以更改 Model_Folder_Usermeta 【参考方案1】:

您的方式看起来是最佳做法。我会在您的folders_usermeta 表中的user_id 和folder_id(这两个定义您的唯一行)上放置一个主键(尽管Kohana 不支持在多个列上设置主键)。

@biakaveron,我永远不会在我的数据库中存储序列化数据,这没有必要,你会失去你的语义和你的 SQL 能力。您可以在此处了解更多信息:

http://www.slideshare.net/billkarwin/sql-antipatterns-strike-back

【讨论】:

以上是关于如何为每个模型存储/关联用户特定的数据(状态?)的主要内容,如果未能解决你的问题,请参考以下文章

如何为特定用户发送浏览器通知?

如何为特定的mongo文档实现TTL

如何为多个用户配置 phpMyAdmin - 每个用户只能访问他们的数据库

如何为状态数组中的每个项目添加 React JSX?

如何为单个模型保存多个单独的记录

如何为 UITableView 中的每个单元格类别指定特定的部分名称