【发布时间】:2013-02-13 19:36:38
【问题描述】:
我在我的 db 表中添加了两个新列,然后我在表模型本身中定义了这些新列,然后,当我调用时
$model->getAttributes()
$model->getAttributes() method call 的数组输出中没有出现两个新列
我的配置中没有设置模式缓存, 知道如何解决这个问题吗?我将如何获得输入表单的值 如果我在炫耀两个新添加的列时遇到问题,则从前端添加的新列?
例如
新列 内部 外出
//查看
<?php echo $form->checkBox($model,'INHOUSE',array("id"=>"inhouse","value"=>1, "uncheckValue"=>0));?>
<?php echo $form->checkBox($model,'OUTHOUSE',array("id"=>"outhouse","value"=>1, "uncheckValue"=>0));?>
//控制器更新动作
我尝试保存 INHOUSE 的值,但 OUTHOUSE 未保存
$model->attributes = $_POST['users'];
$model->save();
正常
$model->INHOUSE = $_POST['users']['INHOUSE'];
$model->OUTHOUSE = $_POST['users']['OUTHOUSE'];
$model->save;
任何想法如何解决所有这些问题?
【问题讨论】:
-
我们来看看实际的型号代码(包括规则)。
-
列处于我的规则的安全模式
-
可以直接在db中输入值吗?我认为这是一个数据库错误,所以请确认。另外,您不需要为此在安全规则中包含这些列,getAttributes 始终使用元数据,因此没有关于安全或不安全的问题。事实上,对于 getAttributes 调用,您不需要更改模型中的任何内容来反映新添加的列。
-
oracle 出了点问题,这就是为什么我从一个简单的复选框中保存数据时遇到问题....自我注意:当使用 yii 框架和 oracle 数据库时,以及将来的新列添加后,yii 不会像 mysql 那样在现场显示它们.. 需要为新模式执行一个脚本,以便 yii 框架可以通过 $model->getAttributes() 显示新表列并将数据保存在桌子