2012-02-04 55 views
3

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

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

我要为内容,以显示每一个可能的领域中添加和编辑表单。

所以,我说的对,我需要以下型号:

  • Item(的hasMany值)
  • Field(属于关联FIELDGROUP &的FieldType(也的hasMany价值?))
  • FieldGroup(的hasMany场)
  • FieldType(hasMany Field)
  • Value(belongsTo Item & Field)

得到我需要的?

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

我怎么会得到与组和类型的字段项的形式?我试图用loadModel('Group');让他们(正确吗?),然后指定数组$fieldsByGroups = $this->Group->find('all')到添加/编辑模板,并做了foreach($fieldsByGroups)创建表单输入。这是一个合适的方法吗?

的值表有4个领域:iditem_idfield_idvalue(长文本,因为我在WordPress表结构看见我并不需要为每个不同的FieldType表在一些EAV,文章建议(其中没有是我需要的))。基本上我不需要id,但我认为CakePHP需要一个primaryKey,并且不能处理item_idfield_id的索引。

感谢,

曼努埃尔

+1

您现在处于无SQL领域!查看MongoDB/CouchDB - 您不需要*定义任何设置结构,并且可以设置管理员能够添加/删除添加/编辑视图中的字段,这些字段使用ORM将最终放入数据库中太麻烦了。 – 2012-03-09 15:42:04

回答

1

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

之后,我只是增加了一些回调魔,使其输出的自定义字段以正确的格式,当我查询了它,并保存自定义字段,如果他们正常的领域。

这是一个快速简便的解决方案,我做了,但如果你这样做,作为应用程序的核心部分,你应该考虑在寻找无SQL数据库。CakePHP有一个很好的数据源,它可以与MongoDB一起工作在http://github.com/ichikaway/cakephp-mongodb