从fieldTable向ActiveRecord添加属性

从fieldTable向ActiveRecord添加属性,activerecord,yii,Activerecord,Yii,我有一个Yii项目,我想在profile页面上添加字段,这些字段在另一个模型中描述 因此,该表可以如下所示: 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) NUL

我有一个Yii项目,我想在profile页面上添加字段,这些字段在另一个模型中描述

因此,该表可以如下所示:

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 创建表“对象\字段”( `id`INT非空自动增量, `varname`VARCHAR(255)NULL, `title`VARCHAR(255)NULL, `字段类型'VARCHAR(255)不为空, `匹配'VARCHAR(255)NULL, `范围`VARCHAR(255)NULL, `默认值为'VARCHAR(255)NULL, `必需的`INT(1)不为NULL默认值为0, `位置'INT(3)不为空默认值0, `visible`INT(1)不为空默认值0, 主键(`id`) 引擎=InnoDB 因此,在
UserProfile
-模型中,我将字段添加到
rules()
attributesLabels()
中,但是
\uu get()
\uu set()
在我将例如
public$this->fieldName添加到模型之前无法找到属性

用户的值存储在另一个表中,该表将
用户
用户数据

我应该覆盖模型中的
\uuuu get()
\uuu set()
,还是如何使用动态定义的字段使表单中的字段接受

更新:

我已经查看了Yii用户扩展,但它只是更改了UserProfile模式以添加新字段。我可以有20种不同类型的用户,每个用户都共享一些字段,可能只有一种类型有一些特殊字段


解决方案可以是将mongoDB添加为关系。但是我从来没有使用过这种技术。

我想你还不清楚会不会有关系
UserProfile有很多objectFields
?例如,您需要
ObjectField.user\u profile\u id
属性。如果希望允许重用对象字段,则需要一个中间表来保存组/角色。