在Post Meta表中存储值与在新表中存储值

时间:2013-11-03 作者:enam

我想在贴子元中存储对贴子进行评级的用户ID列表。因此,对于每个帖子,我都需要检查帖子元以查看其中是否存在用户id。

所以我的问题是,将这些信息存储在post meta中是个好主意,还是应该创建一个表并将其添加到表中。如果值的数量增长很大,性能(表与元)会有什么不同吗?

我更愿意存储在post meta中,因为这是一种更简单、更干净的方式,但我读到了一个答案,其中说

永远不要使用EAV(又名post\\u元表)来存储您可能需要查询的数据。

2 个回复
最合适的回答,由SO网友:Milo 整理而成

根据您的评论:

当用户单击投票时,我会获取该帖子元的值,并检查其中是否存在用户id(使用php explode和foreach)。如果它不存在,那么我在其中添加用户id。

这里不涉及任何查询,因此使用post-meta就可以了。

查询类似于“从ID为n的用户投票的数据库加载所有帖子”。这将更难实现,因为这是一种多对多的关系,而WordPress本身并没有做到这一点。将用户ID存储为序列化数据(数组)是一种PHP构造,MySQL无法“理解”该数据,因此这不是post meta的好用途。

SO网友:Edward

我建议您重新考虑定制表格的想法,因为您可以检查整个;用户是否投票支持帖子"E;在一个非常简单的sql查询中,如SELECT count(user_id) FROM my_votes_table WHERE post_id = 1 AND user_id = 1 它只返回一个简单的小值,而不是php必须处理的重序列化数组或json字符串。从性能的角度来看,这实际上是一种关系数据库类型的任务。

自定义表的集成非常容易,我个人认为更干净,因为post meta value没有适合您的数据类型。

结束

相关推荐

Security and Must Use Plugins

从codex article 必须使用插件:只需将文件上载到mu插件目录即可启用,无需登录我觉得这是一个潜在的安全问题。在站点上运行插件中的任何代码之前,必须通过管理面板激活常规插件。我一直认为这是一个明智的安全预防措施,因为攻击者如果能够以某种方式将文件上载到plugins文件夹,则在运行代码之前,还必须访问和修改数据库。这个mu-plugins 文件夹似乎提供了一种简单的方法来避免这种情况。我知道WordPress开发人员比我更了解安全性,所以我想知道是否有人能解释为什么这不是一个安全漏洞。