您需要在模型的验证rules() 方法中定义所有列,查看并确保您已经为表中的每一列定义了规则,例如(如果它是一个最大长度的字符串128):
public function rules()
{
return array(
...
array('myField', 'length', 'max'=>128),
...
);
}
查看有关validation rules 的一些信息。
此外,如果您使用 CActiveForm 小部件并像这样调用字段,则对于表单:
echo $form->labelEx($model,'myField');
echo $form->textField($model,'myField');
然后你需要确保在模型中也定义了一个标签,在attributeLabels()方法中,例如:
public function attributeLabels()
{
return array(
...
'myField'=>'My Field',
...
);
}
最后,如果您希望该字段可搜索,则需要在模型中的search() 方法中添加一条语句,例如:
public function search()
{
...
$criteria->compare('myField',$this->myField);
...
}
确保所有这些元素都存在,并且不应出现“*未定义”错误。
此外,如果您在主配置文件中使用架构缓存,则必须先清除缓存,然后应用才能看到您的新数据库结构。