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

时间:2012-11-25 10:47:54

标签: activerecord yii

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

$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

从中我推断出数据库很好。问题必须出在Active Records实施中。

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

我做错了什么?

解决方案:正如Sam建议的那样,删除 defaultScope()就可以了。显然,AR属性必须列在 defaultScope()中才能被识别。或者,可以完整地删除 defaultScope()

1 个答案:

答案 0 :(得分:1)

在向MySQL添加默认值后,您是否清理过Yii缓存?