我有一个Yii项目,我想在个人资料页面上添加字段,这些字段在另一个模型中有描述。
所以表格看起来像这样:
CREATE TABLE `object_field` ( `id` INT NOT NULL AUTO_INCREMENT , `varname` VARCHAR(255) NULL , `title` VARCHAR(255) NULL , `field_type` VARCHAR(255) NOT NULL , `match` VARCHAR(255) NULL , `range` VARCHAR(255) NULL , `default` VARCHAR(255) NULL , `required` INT(1) NOT NULL DEFAULT 0 , `position` INT(3) NOT NULL DEFAULT 0 , `visible` INT(1) NOT NULL DEFAULT 0 , PRIMARY KEY (`id`) ) ENGINE = InnoDB
因此,在UserProfile
- 模型中,我已将字段添加到rules()
和attributesLabels()
,但__get()
和__set()
找不到我添加之前的属性,例如建模public $this->fieldName
。
用户的值存储在另一个表中,该表将User
与UserData
连接起来
我是否应该覆盖模型中的__get()
和__set()
,或者如何使用动态定义的字段将字段设置为表单接受?
更新
我查看了Yii用户扩展http://www.yiiframework.com/extension/yii-user/,但它只是更改了UserProfile-schema以添加新字段。我可以有20种不同类型的用户,每个用户共享一些字段,并且可能只有一种类型的特殊字段。
解决方案可能是将mongoDB添加为关系。但我从未使用过这项技术。