2012-02-04 54 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