CakePHP的动态表字段

时间:2012-02-04 23:35:24

标签: cakephp cakephp-2.0

我正在尝试使用动态表字段构建应用。这个想法是管理员可以在不改变MySQL表的情况下定义每个项目的哪些字段可用。

在字段中输入的数据应该是各种类型,例如文本,货币和布尔值,因此可以添加像$这样的后缀或显示布尔图像。还应将字段分配给组(在HTML字段集中将它们分开)。最后一个项目每个字段有一个值。

我希望项目的添加和编辑表单能够显示每个可能的字段。

我是对的,我需要以下型号:

  • Item(hasMany Value)
  • Field(belongsTo FieldGroup& FieldType(也有多个值?))
  • FieldGroup(hasMany Field)
  • FieldType(hasMany Field)
  • Value(belongsTo Item& Field)

得到我需要的东西?

我真的不知道怎么做的部分:每个项目只允许有一个值,但因为模型Item有多个值,所以可以有多个。

我如何在Item中将带有组和类型的字段添加到表单中?我正在尝试使用loadModel('Group');(正确?)然后将数组$fieldsByGroups = $this->Group->find('all')分配给添加/编辑模板并执行foreach($fieldsByGroups)以创建表单输入。这是一种合适的方法吗?

“值”表有4个字段:iditem_idfield_idvalue(我在wordpress表结构中看到的LongText。我不需要不同一些eav-articles中建议的每个FieldType的表(其中没有一个是我需要的))。基本上我不需要id,但我认为CakePHP需要一个primaryKey,并且无法处理item_idfield_id的索引。

感谢,

曼努埃尔

1 个答案:

答案 0 :(得分:1)

我最近在行为中构建的解决方案将使用模型CustomField来描述整个模型上的全局或该模型中的特定记录的额外字段。我还会在每个模型上都有一个名为custom_fields的文本字段,它使用了存储带有自定义字段数据的json数组的行为。

之后我只添加了一些回调魔法,以便在我查询时以正确的格式输出自定义字段,并将自定义字段保存为正常字段。

这是我制作的快速简便的解决方案,但如果您将此作为应用程序的核心部分,则应考虑查看No-SQL数据库。 CakePHP有一个很好的数据源可以在http://github.com/ichikaway/cakephp-mongodb

与MongoDB一起使用