Yii ActiveRecord字段仅返回最近添加的列的默认值

Yii ActiveRecord字段仅返回最近添加的列的默认值,activerecord,yii,Activerecord,Yii,Yii 1.1.12: 当我选择用户模型的实例时,我会得到某些属性/列的默认值。对于我最近(手动)添加到数据库中的列,会发生这种情况: $user->locale // returns null (= default value) 如果我在数据库中设置了一个新的、不同的默认值(通过phpMyAdmin),我将收到新的默认值 该表的其他列也可以: $user->email // returns the correct value 如果运行SQL查询,我将收到正确的值:

Yii 1.1.12: 当我选择用户模型的实例时,我会得到某些属性/列的默认值。对于我最近(手动)添加到数据库中的列,会发生这种情况:

$user->locale    // returns null (= default value)
如果我在数据库中设置了一个新的、不同的默认值(通过phpMyAdmin),我将收到新的默认值

该表的其他列也可以:

$user->email     // returns the correct value
如果运行SQL查询,我将收到正确的值:

SELECT locale FROM tbl_users WHERE tbl_users.id = :userID LIMIT 1
从这一点,我推断数据库很好。问题一定出在活动记录实现中

我希望Yii的魔术方法只需找到每个数据库列,并将它们作为(虚拟)属性添加到模型中。这似乎正在发生,但不知何故,数据库列的默认值被打断了

我做错了什么


解决方案:正如Sam所建议的,删除defaultScope()就成功了。显然,AR属性必须列在defaultScope()中才能识别。或者,defaultScope()可以全部删除

在向MySQL添加DEAFULT值后,您是否清理了Yii缓存?

我们可以查看您添加/更新模型的代码吗?还需要模型代码本身,特别是
rules()
方法。请查看此处的代码和实例:删除
defaultScope
,无需列出所有字段。谢谢Sam,删除defaultScope()我成功了。不,我没有清理缓存。我从来没有弄乱过任何Yii缓存,谷歌搜索也没有透露这是如何实现的。好吧,重启Apache,清理运行时文件夹。