我正在考虑将 CakePHP (2.x) 用于我正在从事的新项目。该项目将拥有拥有客户的用户。客户端模型上会有默认字段,例如姓名、地址、电子邮件等。但我的客户希望用户能够向他们的客户添加自定义字段。
因此,User1 可能希望向其客户添加“最喜欢的颜色”字段,而 User2 可能希望向其客户添加“最喜欢的运动”字段。(这些只是示例)
有没有办法用 CakePHP 做到这一点?在模型的控制器、模型和视图已经烘焙之后,向模型添加字段的最佳解决方案是什么?
我的第一个想法是设置以下模型
用户(id、用户名、密码) hasMany: Clients
客户端(id、first_name、last_name、user_id)属于:用户 hasMany:ClientFields
ClientFieldKey ( id, field_name, user_id ) belongsTo: User hasMany:ClientFieldValues
ClientFieldValue ( id, client_field_key_id, field_value ) belongsTo: ClientFieldKey
ClientField ( id, client_id, client_field_value_id ) belongsTo: Client, ClientFieldValue
那么我可以有类似以下的东西
客户端(id:1,用户名:user1,密码:pass1,user_id:1)
客户端(id:2,用户名:user2,密码:pass2,user_id:1)
客户端(id:3,用户名:user3,密码:pass3,user_id:2)
客户端(id:4,用户名:user4,密码:pass4,user_id:2)
ClientFieldKey(id:1,field_name:颜色,user_id:1)
ClientFieldKey (id: 1, field_name: Sport, user_id: 2)
ClientFieldValue (id: 1, client_field_key_id: 1, field_value: red)
ClientFieldValue(id:2,client_field_key_id:1,field_value:蓝色)
ClientFieldValue(id:3,client_field_key_id:2,field_value:曲棍球)
ClientFieldValue(id:4,client_field_key_id:2,field_value:足球)
ClientField(id:1,client_id:1,client_field_value_id:2)
ClientField(id:2,client_id:2,client_field_value_id:1)
ClientField(id:3,client_id:3,client_field_value_id:3)
ClientField(id:4,client_id:4,client_field_value_id:4)
这意味着用户 1 创建了喜欢蓝色的客户端 1 和喜欢红色的客户端 2。用户 2 创建了喜欢曲棍球的客户 3,而客户 4 喜欢足球。
像这样的模型结构可以在 CakePHP 中工作吗?如果是这样,我将如何将字段添加到客户端添加和动态编辑表单以及我应该如何调用表?