2011-08-26 51 views
0

我正在研究一个新的应用程序,我需要使用EAV 表格样式来创建几个不同的表格。主要是我发布的 是我的用户表。我需要使用EAV,以便自定义用户定义的 字段可以轻松添加/显示。EAV in my cakephp

到目前为止,我有一个简单的表结构,我做了一个ERD为方便查看。

我正在考虑使用的方法与此类似post on key value pairs。 一个简单的beforeSave()将字段与表单名称匹配。

只有一个问题,这个是我看到的,因为我没有与值存储 字段名(从eav_attributes attribute_code),如何 我会去与attribute_code配套了表单字段 和最终是通过表单域传入的值?

+1

我不太确定我是否会遇到问题。你的意思是因为你没有将属性键标签和值存储在同一张表中,你怎么去匹配它们?最简单的解决方案是为eav_attributes创建一个不同的模型,然后对它进行查找('列表'),然后迭代它以匹配属性ID和属性标签。 – JohnP

+0

你是对的,那正是我所要求的。这篇文章的主要原因是找到像这样的最佳做法。我最初的想法是使用类似于博客中使用的内容,并将其与您的建议进行了扩充。 – rottmanj

回答

0

我认为博客中的方法很好。除了直接循环数据数组之外,您必须首先生成适用的EAV密钥列表,因为您要分别存储密钥。在设置它之前,您只需检查它是否存在于数据数组中,以便不设置空键。

基本上你会使用三个模型而不是两个,因为你需要考虑管理属性标签的模型。